1、1数学软件数学软件 Matlab Matlab 基础基础感谢你的观看2019年8月262本讲主要内容本讲主要内容n Matlab 介绍介绍n Matlab 的基本用法的基本用法 感谢你的观看2019年8月263数学软件数学软件l 程序设计语言:程序设计语言:BASIC,Pascal,FORTRAN,C,.l 数值计算软件:数值计算软件: Matlab,Scilab,Octave,.l 符号计算软件:符号计算软件:Mathematica,Maple,.l 交互式数学软件:交互式数学软件:MathCAD,Calcwin,.l 统计软件:统计软件:SAS,SPSS,Minitab,.l 数学规划软件
2、:数学规划软件:Lingo,Lindo,.l 工程计算工程计算软件:软件:Ansys,Fluent,Phoenics,. l 其它:其它:几何画板,几何画板,MathLab, .l 数学相关软件数学相关软件感谢你的观看2019年8月264Matlab 介绍介绍l 在欧美各高等院校,在欧美各高等院校,Matlab 是线性代数、数值分析、数理统是线性代数、数值分析、数理统计、自动控制、数字信号处理、动态系统仿真、图像处理等课计、自动控制、数字信号处理、动态系统仿真、图像处理等课程的基本教学工具,已成为程的基本教学工具,已成为大学生必须掌握的基本技能之一。大学生必须掌握的基本技能之一。l Matla
3、b是一种广泛应用于是一种广泛应用于工程计算工程计算及及数值分析数值分析领域的新型高级语言,自领域的新型高级语言,自 1984 年推向市场以来,经过多年的发展与竞年推向市场以来,经过多年的发展与竞争,现已成为国际公认的最优秀的工程争,现已成为国际公认的最优秀的工程应用开发环境。应用开发环境。Matrix Laboratory 矩阵实验室矩阵实验室Matlab感谢你的观看2019年8月265Matlab 的发展的发展l Matlab 的发展的发展l 1980年,年,Moler 教授用教授用 Fortran 语言编写了集语言编写了集命令翻译命令翻译、 科学计算科学计算于一身的一套交互式软件系统。于一
4、身的一套交互式软件系统。l 1984年,年,Moler 等成立了等成立了 The MathWorks 的公司,用的公司,用 C 语言语言完全改写完全改写 Matlab,并推出第一个商业版。并推出第一个商业版。l 到九十年代,在国际上到九十年代,在国际上 30 几个数学类科技应用软件中,几个数学类科技应用软件中, Matlab 在数值计算方面独占鳌头。在数值计算方面独占鳌头。l 目前,目前,Matlab 已成为世界顶尖的数学应用软件就影响而言,已成为世界顶尖的数学应用软件就影响而言, 至今仍然没有一个别的计算软件可与至今仍然没有一个别的计算软件可与 Matlab 匹敌。匹敌。感谢你的观看2019
5、年8月266l 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每年更新两次每年更新两次目前最新版为目前最新版为 R201
6、3a (2013年年3月发布)月发布)Matlab 的发展的发展感谢你的观看2019年8月267Matlab 的功能与特点的功能与特点l Matlab 具有很强的数值计算功能具有很强的数值计算功能l Matlab 以以矩阵矩阵作为数据操作的基本单位,作为数据操作的基本单位, 但无需预先指定矩阵维数(但无需预先指定矩阵维数(动态定维动态定维)l 按照按照 IEEE 的数值计算标准进行计算的数值计算标准进行计算l 提供十分丰富的数值计算函数,方便计算,提高效率提供十分丰富的数值计算函数,方便计算,提高效率l Matlab 命令命令与数学中的符号、公式非常接近与数学中的符号、公式非常接近, 可读性强
7、,容易掌握可读性强,容易掌握l Matlab 是一个交互式软件系统是一个交互式软件系统l 输入一条命令,立即就可以得到该命令的运行结果输入一条命令,立即就可以得到该命令的运行结果感谢你的观看2019年8月268Matlab 的特点与功能的特点与功能l Matlab 的符号计算功能的符号计算功能Matlab 可以进行一些常见的符号计算可以进行一些常见的符号计算l Matlab 的编程功能的编程功能Matlab具有程序结构控制、函数调用、数据结构、输入输具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,且出、面向对象等程序语言特征,且简单易学、编程效率高简单易学、编程效率高l
8、 Matlab 的绘图功能的绘图功能Matlab提供丰富的绘图命令,提供丰富的绘图命令,很方便实现数据的可视化很方便实现数据的可视化感谢你的观看2019年8月269l Matlab 丰富的工具箱(丰富的工具箱(toolbox)Matlab 的特点与功能的特点与功能根据专门领域中的特殊需要而设计的各种可选工具箱根据专门领域中的特殊需要而设计的各种可选工具箱l Matlab 的的 Simulink 动态仿真集成环境动态仿真集成环境提供建立系统模型、选择仿真参数和数值算法、启动仿提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察真程序对该系统进行仿真、设
9、置不同的输出方式来观察仿真结果等功能仿真结果等功能Symbolic Math PDEOptimizationSignal processImage ProcessStatisticsControl SystemSystem Identification 感谢你的观看2019年8月2610l 获取获取 Matlab 软件软件Matlab 的安装的安装l 插入光盘,自动运行;插入光盘,自动运行; 或点击安装程序或点击安装程序 setup.exen 本课程必须安装的部件本课程必须安装的部件 Matlab Symbolic Math Toolboxl 详细安装方法见课程主页(以详细安装方法见课程主页(
10、以R2009a为例)为例)感谢你的观看2019年8月2611本讲主要内容本讲主要内容n Matlab 介绍介绍n Matlab 的基本用法的基本用法 感谢你的观看2019年8月2612Matlab 的基本用法的基本用法l Matlab 的启动的启动l 使用使用 Windows “开始开始” 菜单菜单l 运行运行 Matlab 系统启动程序系统启动程序 matlabl 双击双击 Matlab 快捷图标快捷图标l Matlab 的退出的退出l 在在 Matlab 主窗口主窗口 File 菜单中选择菜单中选择 Exit Matlabl 在在 Matlab 命令窗口输入命令窗口输入 exit 或或 q
11、uitl 单击单击 Matlab 主窗口的主窗口的“关闭关闭”按钮按钮感谢你的观看2019年8月2613Matlab 的工作界面的工作界面当前工作当前工作空间空间当前目录当前目录中的文件中的文件命令窗口命令窗口命令命令历史记录历史记录命令行提示符命令行提示符当前当前目录目录感谢你的观看2019年8月2614l Matlab 变量的命名规则变量的命名规则Matlab 变量变量l 以以字母开头字母开头 l 后面可以跟后面可以跟 字母字母、数字数字 和和 下划线下划线l 长度一般不要超过长度一般不要超过 63 个字符个字符l 字母区分字母区分 大小大小 写写l Matlab 语句的一般形式语句的一般
12、形式变量变量 = 表达式表达式l 表达式是用运算符将有关运算量连接起来的式子表达式是用运算符将有关运算量连接起来的式子l 计算表达式的结果,并赋给赋值号计算表达式的结果,并赋给赋值号“=”左边的变量左边的变量Matlab 命令的执行:命令的执行:回车回车感谢你的观看2019年8月2615l 查看已定义的变量:查看已定义的变量:who、whos变量的查看变量的查看l 清除变量:清除变量:clearwho显示当前工作空间中的所有变量显示当前工作空间中的所有变量whos显示所有变量的详细属性显示所有变量的详细属性clear清除工作空间中的所有变量清除工作空间中的所有变量clear all清除所有变量
13、,包括全局变量、函数链接等清除所有变量,包括全局变量、函数链接等clear 变量名变量名 清除指定的变量清除指定的变量感谢你的观看2019年8月2616l 特殊变量:特殊变量: ans注:应尽量避免给系统预定义变量重新赋值!注:应尽量避免给系统预定义变量重新赋值!l 系统预定义的变量系统预定义的变量系统预定义系统预定义变量变量pi圆周率圆周率 ,其值为,其值为 imag(log(-1)inf, Inf无穷大无穷大NaN, nanNot-a-Number,一个不定值,如,一个不定值,如 0/0eps浮点运算相对精度浮点运算相对精度i, j虚部单位虚部单位感谢你的观看2019年8月2617Matl
14、ab 数值运算数值运算l 默认是双精度实数,默认是双精度实数,可用浮点数或科学计数法表示可用浮点数或科学计数法表示例:例:3, 0.4, 1.603e-12l 浮点运算的浮点运算的相对误差为相对误差为 eps,大约为大约为 2.2 10-16l 浮点数表示范围为浮点数表示范围为:10-308 10308l 复数的输入复数的输入例:例:z=3+4i (4 与与 i 之间不能有空格之间不能有空格)l Matlab 中的数与算术表达式中的数与算术表达式注:复数作为矩阵元素输入时,加号两边不要加空格注:复数作为矩阵元素输入时,加号两边不要加空格! !感谢你的观看2019年8月2618l 命令分隔符命令
15、分隔符l 算术运算算术运算 Matlab 数值运算数值运算+ - * 加,减,乘,幂加,减,乘,幂/ 右除,左除右除,左除l 一行可以写多个语句,语句间用一行可以写多个语句,语句间用逗号或分号逗号或分号隔开隔开l 若不想在屏幕上输出结果,可以在语句最后加分号若不想在屏幕上输出结果,可以在语句最后加分号 l 如果语句很长,可用如果语句很长,可用续行符续行符 “”(三个点)续行(三个点)续行 续行符的前面最好留一个空格续行符的前面最好留一个空格l 分号的作用分号的作用l 续行符续行符感谢你的观看2019年8月2619l 定义矩阵:直接输入法定义矩阵:直接输入法l 矩阵用方括号矩阵用方括号 “ ”
16、括起括起l 矩阵同一行中的元素之间用矩阵同一行中的元素之间用 空格空格 或或 逗号逗号 分隔分隔l 矩阵行与行之间用矩阵行与行之间用 分号分号 分开,也可以用分开,也可以用 回车回车 代替代替A=1 2 3; 4 5 6; 7 8 9矩阵的输入矩阵的输入l Matlab 的的操作对象操作对象 矩阵矩阵例:例:感谢你的观看2019年8月2620l 矩阵元素可以是任何数值表达式矩阵元素可以是任何数值表达式例:例:x=-1.3, sqrt(3), (1+2+3)*4/5矩阵元素赋值矩阵元素赋值l 矩阵元素的单独赋值矩阵元素的单独赋值例:例:x(2)=6.8例:例:x(5)=abs(x(6) ?动态定
17、维功能:动态定维功能:自动扩展向量的长度,自动扩展向量的长度, 并将没有赋值的部分置零并将没有赋值的部分置零 例:例:x(5)=abs(x(1)感谢你的观看2019年8月2621l 大矩阵可以把小矩阵作为其元素大矩阵可以把小矩阵作为其元素矩阵元素赋值矩阵元素赋值例:例: A=A ; 11 12 13在原矩阵的下方加一行在原矩阵的下方加一行思考:思考:如何在原矩阵的右边添加一列?如何在原矩阵的右边添加一列?l 空矩阵空矩阵例:例: B=感谢你的观看2019年8月2622l 单个元素的引用单个元素的引用例:例: x=A(2,3)+A(1,2)矩阵元素的引用矩阵元素的引用x(i) 向量向量 x 中的
18、第中的第 i 个元素个元素A(i,j)矩阵矩阵 A 中的第中的第 i 行,第行,第 j 列元素列元素l 多个元素的引用:冒号的特殊用法多个元素的引用:冒号的特殊用法a:b:cl 产生一个由等差序列组成的向量产生一个由等差序列组成的向量l a 是首项,是首项,b 是公差,是公差,c 确定最后一项确定最后一项l 若若 b = 1,则则 b 和其前面的冒号可以省略和其前面的冒号可以省略例:例:x=1:2:5 y=1:2:6例:例:x=2:1:5 y=2:5例:例:x=3:1:0感谢你的观看2019年8月2623例:例:y=x(1:3)矩阵元素的引用矩阵元素的引用l 多个元素的引用(续)多个元素的引用
19、(续)x(i:j) 向量向量 x 中的第中的第 i 到第到第 j 个元素个元素A(i:j,m:n)由第由第 i 至至 j 行和第行和第 m 至至 n 列组成的列组成的子矩阵子矩阵例:例: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 行(子矩阵)行(子矩阵)感谢你的观看2019年8月2624矩阵元素的引用矩阵元素的引用l 多个元素的引用(
20、续)多个元素的引用(续)A(:,k) 矩阵的第矩阵的第 k 列列A(i,:)矩阵的第矩阵的第 i 行行A(i:j,:)矩阵的第矩阵的第 i 行到第行到第 j 行行A(:,m:n)矩阵的第矩阵的第 m 行到第行到第 n 列列A(:,:)整个矩阵整个矩阵x(:)取向量的所有元素,并按取向量的所有元素,并按列向量列向量方式输出方式输出A(:)将矩阵的所有元素将矩阵的所有元素按列按列排成一个排成一个列向量列向量感谢你的观看2019年8月2625矩阵元素的引用矩阵元素的引用l 多个元素的引用:不连续元素的选取多个元素的引用:不连续元素的选取A(i1, i2, ., ip,j1, j2, ., jq) 矩
21、阵第矩阵第 i1, i2, ., ip 行和第行和第 j1, j2, ., jq 列组成的子矩阵列组成的子矩阵例:例:A(1,3,4, 2,3)例:例:A(1,4,3, 2,3)l 删除指定的行或列删除指定的行或列A(i,:)= 删除第删除第 i 行行A(:,j)=删除第删除第 j 列列感谢你的观看2019年8月2626特殊矩阵特殊矩阵l Matlab 提供了一些函数,用于生成一些常见的特殊矩阵提供了一些函数,用于生成一些常见的特殊矩阵例例:A=magic(3)B=ones(4)l 特殊矩阵的生成特殊矩阵的生成A=magic(5)a1=diag(A)a2=diag(A,1)a3=diag(A,
22、-2)a=1,2,3,4A1=diag(a)A2=diag(a,1)A3=diag(a,-2)注意注意 diag 的用法的用法感谢你的观看2019年8月2627常见矩阵生成函数常见矩阵生成函数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 时可简写
23、为时可简写为 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)产生产生 01 间均匀分布的随机矩阵间均匀分布的随机矩阵 m=n 时简写为时简写为 rand(n)randn(m,n)randn(n)产生均值为产生均值为0,方差为
24、,方差为1的标准正态分布随机矩阵的标准正态分布随机矩阵m=n 时简写为时简写为 randn(n)其它特殊矩阵生成函数:其它特殊矩阵生成函数:magic、hilb、pascal 等等感谢你的观看2019年8月2628矩阵基本运算矩阵基本运算l 矩阵的加减矩阵的加减:对应分量进行运算对应分量进行运算l 矩阵的普通乘法矩阵的普通乘法参与加减运算的矩阵具有参与加减运算的矩阵具有 相同的维数!相同的维数!A=1,2; 3,4; B=5,6; 7,8C=A+B D=B-A例例:参与运算的矩阵须满足线性代数中矩阵相乘的原则!参与运算的矩阵须满足线性代数中矩阵相乘的原则!A=1,2,3; 4,5,6; B=
25、2,1; 4,3C=B*A例例:感谢你的观看2019年8月2629矩阵基本运算矩阵基本运算l 矩阵的除法:矩阵的除法:若若 A 可逆方阵,则可逆方阵,则AB A 的逆左乘的逆左乘 B inv(A)*BB/A A 的逆右乘的逆右乘 B B*inv(A)l 矩阵的幂:矩阵的幂:若若 A 是方阵,是方阵,p 是正整数,则是正整数,则Ap = A 的的 p 次幂,即次幂,即 p 个个 A 相乘相乘 右除右除左除左除l 矩阵的转置与共轭转置矩阵的转置与共轭转置A共轭转置共轭转置A.普通转置,不取共轭,普通转置,不取共轭,点与单引号之间不能有空格点与单引号之间不能有空格A = 1, 2-3i; 3, 1+
26、4iB = AC = A.例例:感谢你的观看2019年8月2630翻转与旋转翻转与旋转l 矩阵的翻转与旋转矩阵的翻转与旋转例例:注意矩阵旋转与转置的区别注意矩阵旋转与转置的区别!fliplr(A)左右左右翻转翻转flipud(A)上下翻转上下翻转rot90(A)rot90(A,k)逆时针旋转逆时针旋转 90 度度逆时针旋转逆时针旋转 k90 度度A = 1 2 3;4 5 6B = fliplr(A)C = flipud(A)D = rot90(A)E = rot90(A,-1)感谢你的观看2019年8月2631改变矩阵的形状改变矩阵的形状l 改变矩阵的形状:改变矩阵的形状:reshape(A
27、,m,n)将矩阵元素按将矩阵元素按 列方向列方向 进行重新排列成一个进行重新排列成一个 mn 的新矩阵的新矩阵新矩阵的元素个数必须与原矩阵元素个数相等!新矩阵的元素个数必须与原矩阵元素个数相等!A=1,2,3; 4,5,6; 7,8,9; 10,11,12B=reshape(A,4,3)例例:C=reshape(A,2,6)C=reshape(A,5,2)感谢你的观看2019年8月2632查看矩阵的大小查看矩阵的大小l 查看矩阵的大小:查看矩阵的大小:size、lengthsize(A)返回矩阵返回矩阵 A 的行数和列数的行数和列数size(A,1)返回矩阵返回矩阵 A 的行数的行数size(
28、A,2)返回矩阵返回矩阵 A 的列数的列数length(x)length(X)若若 x 是向量,则返回是向量,则返回 x 的长度的长度若若 X 是矩阵,则返回行数和列数中大的一个是矩阵,则返回行数和列数中大的一个numel(A)返回返回 A 的的元素的个数元素的个数A=1,2,3; 4,5,6size(A)size(A,1)size(A,2)length(A), numel(A)x=1:5; length(x)例例:感谢你的观看2019年8月2633Matlab帮助系统帮助系统l 如何寻找帮助如何寻找帮助help 显示指定命令的简短使用说明显示指定命令的简短使用说明doc以网页形式显示完整的使
29、用帮助以网页形式显示完整的使用帮助help sizedoc size例例:l 查找命令查找命令lookfor 按指定的关键词查询与之相关的命令按指定的关键词查询与之相关的命令which显示命令或函数所在的目录显示命令或函数所在的目录l 其它相关命令其它相关命令cd、dir、more更多更多 Matlab 命令,参见课程主页命令,参见课程主页感谢你的观看2019年8月2634几个小技巧几个小技巧l Matlab 的命令记忆功能:的命令记忆功能:上下箭头键上下箭头键l 命令补全功能:命令补全功能: Tab 键键 l 用用 Esc 键键 删除命令行删除命令行l 命令命令 home、clc可以先输入命
30、令的前几个字符,再按上下键缩小搜索范围可以先输入命令的前几个字符,再按上下键缩小搜索范围感谢你的观看2019年8月2635上机要求上机要求l 将完成每题所用的命令写入一个文件,取名为将完成每题所用的命令写入一个文件,取名为 m01.ml 然后将该文件作为附件,通过然后将该文件作为附件,通过 foxmail 以邮件形式发给以邮件形式发给 l 邮件主题为:邮件主题为:机号机号-学号学号-姓名姓名l 其中机号为其中机号为 两位数两位数l 三个字段之间用英文状态下的减号链接三个字段之间用英文状态下的减号链接q 上机要求上机要求q 上机上机安排安排按学号入座,见机房门口的通知按学号入座,见机房门口的通知
31、感谢你的观看2019年8月26361、写出可以完成下列任务的、写出可以完成下列任务的Matlab命令命令 (函数函数) : (1)Matlab中的圆周率中的圆周率 约等于多少?约等于多少?(2)Matlab中的中的浮点浮点运算相对精度是多少?运算相对精度是多少?(3)如何知道命令)如何知道命令 realmax,realmin 的具体用法?的具体用法?(4)如何知道函数)如何知道函数 max 的作用?并举例加以说明。的作用?并举例加以说明。2、回答以下问题:、回答以下问题:(1)Matlab 是什么含义?是什么含义?(2)Matlab 命令命令 who 与与 whos 有什么区别?有什么区别?(
32、3)如何使用)如何使用 Matlab 命令补全功能?命令补全功能?(4)Matlab 命令命令 clear、clc 与与 home 有什么区别?有什么区别?上机作业上机作业感谢你的观看2019年8月26373、写出可以完成下列任务的、写出可以完成下列任务的Matlab命令命令 : (1)生成)生成 5 阶的单位阵和阶的单位阵和 8 阶均匀分布的随机矩阵阶均匀分布的随机矩阵(2)生成一个列向量)生成一个列向量 x = 1, 3, 5, 7, 9, , 99 (3)生成以)生成以 x 的前的前 8 个元素为对角线的矩阵个元素为对角线的矩阵 A(4)生成一个与)生成一个与 A 同阶的正态分布的随机矩阵同阶的正态分布的随机矩阵 B(5)计算计算 A 的转置的转置 与与 B 的下三角部分的乘积的下三角部分的乘积 C (6)删除删除 C 的第三行和第二列的第三行和第二列(7)生成由生成由 B 的第的第 2、4、5 行和第行和第4、1 列组成的子矩阵列组成的子矩阵 D(8)教材第教材第 53 页,第页,第 5 题题 (提示:提示:5 (7) 可以使用可以使用 diag 来实现来实现) 上机作业上机作业感谢你的观看2019年8月26