数学软件 Matlab —— Matlab 基础
本讲主要内容 Matlab 介绍 Matlab 的基本用法
Matlab Matlab 介绍 Matrix Laboratory 矩阵实验室
Matlab 的发展 Matlab 的发展 1980年,Moler 教授用 Fortran 语言编写了集命令翻译、 科学计算于一身的一套交互式软件系统。 1984年,Moler 等成立了 The MathWorks 的公司,用 C 语言完全改写 Matlab,并推出第一个商业版。 到九十年代,在国际上 30 几个数学类科技应用软件中, Matlab 在数值计算方面独占鳌头。 目前,Matlab 已成为世界顶尖的数学应用软件就影响而言, 至今仍然没有一个别的计算软件可与 Matlab 匹敌。
Matlab 的发展 Matlab 的发行版本 1984年,Matlab 1.0 (DOS版,182K,20多个函数) 1992年,Matlab 4.0 (93年推出Windows版,加入 simulink) 1994年,Matlab 4.2(得到广泛重视和应用) 1999年,Matlab 5.3(真正实现32位运算) 2002年,Matlab 6.5(采用JIT加速器) 2004年,Matlab 7.0 自2006年起,Matlab每年更新两次 目前最新版为 R2014b (2014年10月发布)
Matlab 的功能与特点 Matlab 是一个交互式软件系统 Matlab 具有很强的数值计算功能 输入一条命令,立即就可以得到该命令的运行结果 Matlab 具有很强的数值计算功能 Matlab 以矩阵作为数据操作的基本单位, 但无需预先指定矩阵维数(动态定维) 按照 IEEE 的数值计算标准进行计算 提供十分丰富的数值计算函数,方便计算,提高效率 Matlab 命令与数学中的符号、公式非常接近, 可读性强,容易掌握
Matlab 的特点与功能 Matlab 的符号计算功能 Matlab 的绘图功能 Matlab 的编程功能
Matlab 的特点与功能 Matlab 丰富的工具箱(toolbox) Matlab 的 Simulink 动态仿真集成环境 根据专门领域中的特殊需要而设计的各种可选工具箱 Symbolic Math PDE Optimization Signal process Image Process Statistics Control System System Identification … … Matlab 的 Simulink 动态仿真集成环境 提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察仿真结果等功能
Matlab 的安装 获取 Matlab 软件 插入光盘,自动运行; 或点击安装程序 setup.exe 本课程必须安装的部件 Matlab Symbolic Math Toolbox
本讲主要内容 Matlab 介绍 Matlab 的基本用法
Matlab 的基本用法 Matlab 的启动 Matlab 的退出 使用 Windows “开始” 菜单 在 Matlab 主窗口 File 菜单中选择 Exit Matlab 在 Matlab 命令窗口输入 exit 或 quit 单击 Matlab 主窗口的“关闭”按钮
Matlab 的工作界面 当前目录 命令窗口 当前工作空间 当前目录中的文件 命令行提示符 命令 历史记录
Matlab 变量 Matlab 语句的一般形式 变量 = 表达式 Matlab 变量的命名规则 表达式是用运算符将有关运算量连接起来的式子 计算表达式的结果,并赋给赋值号“=”左边的变量 Matlab 命令的执行:回车 Matlab 变量的命名规则 以字母开头 后面可以跟 字母、数字 和 下划线 长度一般不要超过 63 个字符 字母区分 大小 写
变量的查看 查看已定义的变量:who、whos 清除变量:clear who 显示当前工作空间中的所有变量 whos 显示所有变量的详细属性 清除工作空间中的所有变量 clear all 清除所有变量,包括全局变量、函数链接等 clear 变量名 清除指定的变量
系统预定义变量 系统预定义的变量 注:应尽量避免给系统预定义变量重新赋值! 特殊变量: ans pi 圆周率 ,其值为 imag(log(-1)) inf, Inf 无穷大 NaN, nan Not-a-Number,一个不定值,如 0/0 eps 浮点运算相对精度 i, j 虚部单位 注:应尽量避免给系统预定义变量重新赋值! 特殊变量: ans
Matlab 数值运算 Matlab 中的数与算术表达式 注:复数作为矩阵元素输入时,加号两边不要加空格! 默认是双精度实数,可用浮点数或科学计数法表示 例:3, 0.4, 1.603e-12 浮点运算的相对误差为 eps,大约为 2.210-16 浮点数表示范围为:10-308 ~ 10308 复数的输入 例:z=3+4i (4 与 i 之间不能有空格) 注:复数作为矩阵元素输入时,加号两边不要加空格!
Matlab 数值运算 算术运算 命令分隔符 分号的作用 续行符 + - * ^ 加,减,乘,幂 / \ 右除,左除 + - * ^ 加,减,乘,幂 / \ 右除,左除 命令分隔符 一行可以写多个语句,语句间用逗号或分号隔开 分号的作用 若不想在屏幕上输出结果,可以在语句最后加分号 续行符 如果语句很长,可用续行符 “…”(三个点)续行 续行符的前面最好留一个空格
矩阵的输入 Matlab 的操作对象 矩阵 定义矩阵:直接输入法 例: A=[1 2 3; 4 5 6; 7 8 9] 矩阵用方括号 “[ ]” 括起 矩阵同一行中的元素之间用 空格 或 逗号 分隔 矩阵行与行之间用 分号 分开,也可以用 回车 代替
矩阵元素赋值 矩阵元素可以是任何数值表达式 矩阵元素的单独赋值 例:x=[-1.3, sqrt(3), (1+2+3)*4/5] 例:x(5)=abs(x(1)) 动态定维功能:Matlab 会自动扩展向量的长度, 并将没有赋值的部分置零 例:x(5)=abs(x(6)) ??
矩阵元素赋值 大矩阵可以把小矩阵作为其元素 空矩阵 思考:如何在原矩阵的右边添加一列? 例: A=[A ; 11 12 13] 在原矩阵的下方加一行 思考:如何在原矩阵的右边添加一列? 空矩阵 例: B=[]
a:b:c 矩阵元素的引用 单个元素的引用 多个元素的引用:冒号的特殊用法 x(i) 向量 x 中的第 i 个元素 A(i,j) 例: x=A(2,3)+A(1,2) 多个元素的引用:冒号的特殊用法 产生一个由等差序列组成的向量 a 是首项,b 是公差,c 确定最后一项 若 b = 1,则 b 和其前面的冒号可以省略 a:b:c 例:x=1:2:5 y=1:2:6 例:x=2:1:5 y=2:5 例:x=3:1:0
矩阵元素的引用 多个元素的引用(续) x(i:j) 向量 x 中的第 i 到第 j 个元素 A(i:j,m:n) 例:y=x(1:3) 例:B=A(2:3,1:3) y=A(1,1:3) x(i:end) 向量 x 中的第 i 个到最后一个元素 A(i:end,m:n) A(i:j,m:end) 第 i 行到最后一行与 m 至 n 列(子矩阵) 第 m 列到最后一列与 i 至 j 行(子矩阵)
矩阵元素的引用 多个元素的引用(续) A(:,k) 矩阵的第 k 列 A(i,:) 矩阵的第 i 行 A(i:j,:) A(:,m:n) 矩阵的第 m列到第 n 列 A(:,:) 整个矩阵 x(:) 取向量的所有元素,并按列向量方式输出 A(:) 将矩阵的所有元素按列排成一个列向量
特殊矩阵 特殊矩阵的生成 例: Matlab 提供了一些函数,用于生成一些常见的特殊矩阵 A=magic(3) B=ones(4) a1=diag(A) a2=diag(A,1) a3=diag(A,-2) 注意 diag 的用法 a=[1,2,3,4] A1=diag(a) A2=diag(a,1) A3=diag(a,-2)
常见矩阵生成函数 zeros(m,n) zeros(n) 生成一个 m 行 n 列的零矩阵 m=n 时可简写为 zeros(n) ones(m,n) ones(n) 生成一个 m 行 n 列的元素全为 1 的矩阵 m=n 时可简写为 ones(n) eye(m,n) eye(n) 生成一个主对角线全为 1 的 m 行 n 列矩阵 m=n 时可简写为 eye(n),即为 n 维单位矩阵 diag(X) diag(X,k) 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵 tril(A) 提取一个矩阵的下三角部分 triu(A) 提取一个矩阵的上三角部分 rand(m,n) rand(n) 产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n) randn(m,n) randn(n) 产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n) 其它特殊矩阵生成函数:magic、hilb、pascal 等
矩阵基本运算 矩阵的普通乘法 矩阵的加减:对应分量进行运算 例: A=[1,2; 3,4]; B=[5,6; 7,8] C=A+B D=B-A 参与加减运算的矩阵具有 相同的维数! 矩阵的普通乘法 例: A=[1,2,3; 4,5,6]; B= [2,1; 4,3] C=B*A 参与运算的矩阵须满足线性代数中矩阵相乘的原则!
矩阵基本运算 矩阵的除法:若 A 可逆方阵,则 B/A <==> A 的逆右乘 B <==> B*inv(A) 右除 A\B <==> A 的逆左乘 B <==> inv(A)*B 左除 矩阵的幂:若 A 是方阵,p 是正整数,则 A^p ==> A 的 p 次幂,即 p 个 A 相乘 矩阵的转置与共轭转置 A' 共轭转置 A.' 普通转置,不取共轭,点与单引号之间不能有空格 例: A = [1, 2-3i; 3, 1+4i] B = A' C = A.'
Matlab帮助系统 如何寻找帮助 help 显示指定命令的简短使用说明 doc 以网页形式显示完整的使用帮助 例: help size doc size 查找命令 lookfor 按指定的关键词查询与之相关的命令 which 显示命令或函数所在的目录 其它相关命令 更多 Matlab 命令,参见课程主页 cd、dir、more
几个小技巧 Matlab 的命令记忆功能:上下箭头键 命令补全功能: Tab 键 用 Esc 键 删除命令行 命令 home、clc 可以先输入命令的前几个字符,再按上下键缩小搜索范围 命令补全功能: Tab 键 用 Esc 键 删除命令行 命令 home、clc
上机作业 教材P5的 5、 1 、 2 、 3题