1、第第2章章 MATLAB与与Simulink简简介介2.1 MATLAB2.1 MATLAB的基础知识的基础知识2.1.1 MATLAB2.1.1 MATLAB语言系统语言系统1.MATLAB1.MATLAB简介简介MATLABMATLAB(MATrix LABoratoryMATrix LABoratory,即矩阵实验室)是美国的,即矩阵实验室)是美国的Cleve MolerCleve Moler教授利用自己研制的基于特征值计算和线性代教授利用自己研制的基于特征值计算和线性代数软件包开发的一种高级语言。数软件包开发的一种高级语言。19901990年推出的年推出的MATLAB3.5iMATLA
2、B3.5i是第一个可以运行于是第一个可以运行于Microsoft Microsoft WindowsWindows下的版本,它可以在两个窗口上分别显示命令行计算下的版本,它可以在两个窗口上分别显示命令行计算结果和图形结果。稍后推出的结果和图形结果。稍后推出的SimuLABSimuLAB环境首次引入基于框图环境首次引入基于框图的仿真功能,该环境就是我们现在所知的的仿真功能,该环境就是我们现在所知的SimulinkSimulink,其模型,其模型输入的方式使得一个复杂的控制系统的数字仿真问题变得十输入的方式使得一个复杂的控制系统的数字仿真问题变得十分直观而且相当容易。分直观而且相当容易。经过多年来
3、版本的不断更新,新版本的经过多年来版本的不断更新,新版本的MATLABMATLAB功能已经十分强大,其应用领域日益功能已经十分强大,其应用领域日益广泛,速度更快,数值性能更好;广泛,速度更快,数值性能更好;用户图形界面设计更趋合理;用户图形界面设计更趋合理;与与C C语言接口及转换的兼容性更强;语言接口及转换的兼容性更强;新的虚拟现实工具箱更给仿真结果三维视景新的虚拟现实工具箱更给仿真结果三维视景下显示带来了新的解决方案。下显示带来了新的解决方案。MATLABMATLAB具有以下主要特点:具有以下主要特点:(1 1)超强的数值运算功能。)超强的数值运算功能。(2 2)语法限制不严格,程序设计自
4、由度大。)语法限制不严格,程序设计自由度大。(3 3)程序的可移植性很好。)程序的可移植性很好。(4 4)强大的数据可视化功能。)强大的数据可视化功能。(5 5)丰富的工具箱。)丰富的工具箱。2.MATLAB2.MATLAB工作环境工作环境图形窗口图形窗口“Figure”Figure”M文件窗口文件窗口 3 3MATLABMATLAB的的M M文件文件所谓所谓M M文件,就是用户把要实现的命令写在一个文件,就是用户把要实现的命令写在一个以以.m.m为扩展名的文件中为扩展名的文件中 M M文件有两种格式(统称为文件有两种格式(统称为M M文件)文件)函数式函数式M M文件文件程序式程序式M M文
5、件文件程序式程序式M M文件文件用于把很多需要在命令窗口输入的用于把很多需要在命令窗口输入的命令放在一起,就是命令的简单叠加命令放在一起,就是命令的简单叠加函数式函数式M M文件文件用于把重复的程序段封装成函数供用于把重复的程序段封装成函数供用户调用。用户调用。(1 1)程序式)程序式M M文件文件运行程序,得到结果:运行程序,得到结果:(2 2)函数式)函数式M M文件文件函数式函数式M M文件首行总是以关键字文件首行总是以关键字“function”function”开开头,并在首行中列出全部输入、输出参数以及函头,并在首行中列出全部输入、输出参数以及函数名。函数名应置于等号右侧并与对应的数
6、名。函数名应置于等号右侧并与对应的M M文件文件名相同,输出参数紧跟在名相同,输出参数紧跟在“function”function”之后,常之后,常用中括号括起来(若仅有一个输出参数则无需中用中括号括起来(若仅有一个输出参数则无需中括号);输入参数紧跟在函数名之后,常用小括括号);输入参数紧跟在函数名之后,常用小括号括起来。如果函数有多个输入或输出参数,则号括起来。如果函数有多个输入或输出参数,则多个参数之间用英文状态下的逗号加以分隔。多个参数之间用英文状态下的逗号加以分隔。c=5运行程序,运行程序,得到结果:得到结果:4.MATLAB4.MATLAB的帮助系统的帮助系统MATLABMATLAB
7、具有完善的帮助系统,帮助内容丰富,具有完善的帮助系统,帮助内容丰富,获取帮助的形式多样。获取帮助的形式多样。帮助系统包括帮助系统包括:命令行帮助命令行帮助联机帮助联机帮助演示帮助演示帮助充分利用帮助系统,可以更快更准确地掌握充分利用帮助系统,可以更快更准确地掌握MATLABMATLAB的使用方法。的使用方法。命令行帮助命令行帮助help help 工具箱或命令名工具箱或命令名 联机帮助联机帮助 演示帮助演示帮助2.1.2 MATLAB2.1.2 MATLAB的基本运算的基本运算1 1MATLABMATLAB的基本语句结构的基本语句结构(1 1)变量)变量变量命名的规则为:变量命名的规则为:1
8、1)变量的名称必须以字母开头,其后可以为)变量的名称必须以字母开头,其后可以为字母、数字或者下划线。字母、数字或者下划线。2 2)变量名长度不超过)变量名长度不超过6363个字符,超过的部分个字符,超过的部分将会被忽略。将会被忽略。3 3)变量名区分字母的大小写;)变量名区分字母的大小写;MATLABMATLAB中还设置了如下一些特殊变量:中还设置了如下一些特殊变量:ans计算结果默认的变量名计算结果默认的变量名eps浮点数相对精度变量浮点数相对精度变量pi圆周率圆周率Inf正无穷大变量,由正无穷大变量,由n/0或者溢出产生或者溢出产生NaN不确定量,由不确定量,由0/0或者或者产生产生i或或
9、j虚数单位变量虚数单位变量realmax 最大可用正实数,最大可用正实数,realmax=1.7977e+308realmin最小可用正实数,最小可用正实数,realmin=2.2251e-308 MATABMATAB语言的赋值语句有两种:语言的赋值语句有两种:变量名变量名=运算表达式运算表达式 返回变量列表返回变量列表=函数名(输入变量列表)函数名(输入变量列表)例如例如 T=0:pi/50:2*pi;m,p=bode(a,b,c,d,w)(2 2)赋值语句)赋值语句说明说明 等号右边的表达式可以由分号结束,也可以由逗等号右边的表达式可以由分号结束,也可以由逗号或换行号结束,但它们的含义是不
10、同的。如果用分号或换行号结束,但它们的含义是不同的。如果用分号结束,则左边的变量结果将不在屏幕上显示出来;号结束,则左边的变量结果将不在屏幕上显示出来;由逗号或换行号结束,则将把左边的返回值内容全部由逗号或换行号结束,则将把左边的返回值内容全部显示出来。显示出来。在调用函数时,在调用函数时,MATLABMATLAB允许一次返回多个结允许一次返回多个结果,当函数的输出参数不只一个时,用中括号果,当函数的输出参数不只一个时,用中括号“”把输出参数括起来,参数之间用逗号分把输出参数括起来,参数之间用逗号分开;输入变量用小括号开;输入变量用小括号“()”()”括起来,当个数括起来,当个数不只一个时,用
11、逗号分开。不只一个时,用逗号分开。在在MATLABMATLAB中,冒号中,冒号“:”是很有用的算子,经常是很有用的算子,经常用它来生成向量。语句用它来生成向量。语句a=i:k:j;它生成一个从它生成一个从i i到到j j步长为步长为k k的行向量的行向量a a。如果增量。如果增量为负值,可以得一个递减顺序的向量,增量为为负值,可以得一个递减顺序的向量,增量为l l时可以忽略。时可以忽略。MATLABMATLAB用通常的十进制数表示常数、小数和负数。用通常的十进制数表示常数、小数和负数。与通常的数学表示一样,还可以使用以与通常的数学表示一样,还可以使用以1010为幂的常为幂的常数以及虚数,数以及
12、虚数,MATLABMATLAB接受各种合法的数据输入。接受各种合法的数据输入。(3 3)数据的输入输出格式)数据的输入输出格式(4 4)常用操作命令)常用操作命令clc清除命令窗口的内容,对工作环境中的全部变量无任何影响清除命令窗口的内容,对工作环境中的全部变量无任何影响clear清除工作空间的所有变量清除工作空间的所有变量clear all清除工作空间的所有变量、函数和清除工作空间的所有变量、函数和MEX文件文件save将工作空间里的变量保存到磁盘文件将工作空间里的变量保存到磁盘文件load将磁盘文件里的变量加载到工作空间将磁盘文件里的变量加载到工作空间close关闭当前的关闭当前的Figu
13、re窗口窗口close all关闭所有的关闭所有的Figure窗口窗口what列出当前目录下所有的列出当前目录下所有的M文件文件which显示出某个显示出某个 MATLAB函数的路径函数的路径dir查询当前目录下所有的文件查询当前目录下所有的文件type在命令窗口显示文件在命令窗口显示文件cd删除文件删除文件cd path显示当前目录显示当前目录delete进入目录进入目录2.MATLAB2.MATLAB的基本运算的基本运算加(加(+)、减()、减(-)、乘()、乘(*)、除()、除(/)、幂()、幂()等运算操作)等运算操作 MATLABMATLAB还提供几乎所有的运算函数还提供几乎所有的运
14、算函数 初等运算函数初等运算函数 方根函数方根函数sqrt()自然指数函数自然指数函数exp()自然对数函数(以自然对数函数(以e为为底)底)log()以以10为底的对数函数为底的对数函数log10()最大公因子最大公因子gcd()最小公倍数最小公倍数lcm()符号函数符号函数sign()复数的模复数的模abs()复数的幅角复数的幅角angle()复数共轭运算复数共轭运算conj()三角函数三角函数 正弦函数正弦函数sin()余弦函数余弦函数cos()正切函数正切函数tan()反正弦函数反正弦函数asin()反余弦函数反余弦函数acos()反正切函数反正切函数atan()双曲正弦函数双曲正弦函
15、数sinh()反双曲正弦函数反双曲正弦函数asinh()数据统计分析函数数据统计分析函数 最大值最大值max()最小值最小值min()计算平均值计算平均值mean()计算中间值计算中间值median()求和求和sum()计算元素之积计算元素之积prod()元素排序元素排序sort()例例2-1 2-1 某二阶欠阻尼系统的单位阶跃响应为某二阶欠阻尼系统的单位阶跃响应为0)60866.0sin(155.11)(5.0ttetct试绘制响应曲线。试绘制响应曲线。MATLAB 程序如下:程序如下:t=0:0.1:15;c=1-1.15*exp(-0.5*t).*sin(0.866*t+pi/3);pl
16、ot(t,c);grid;%绘制曲线绘制曲线由由maxmax函数可求出响应的最大值(峰值)函数可求出响应的最大值(峰值)MATLAB 程序如下:程序如下:mp=max(c)运行程序,运行程序,得到结果:得到结果:mp=1.1623运行程序,得到结果:运行程序,得到结果:3.3.矩阵运算矩阵运算MATLABMATLAB中所有的计算都是以矩阵为基本单元进行中所有的计算都是以矩阵为基本单元进行的,的,MATLABMATLAB对矩阵的运算功能最齐全,也最强大。对矩阵的运算功能最齐全,也最强大。(1)(1)矩阵输入矩阵输入矩阵输入时一行中各元素间用逗号矩阵输入时一行中各元素间用逗号“,”或空或空格,行间
17、用分号格,行间用分号“;”或直接回车,整个矩阵或直接回车,整个矩阵以括号以括号“”和和“”表示开始和结束。表示开始和结束。例例2-2 2-2 输入以下输入以下MATLABMATLAB语句语句a=1 2 3;4 5 6;7 8 9 b=1,1+2i;2+3i,exp(-1)运行程序,得到结果:运行程序,得到结果:a=1 2 3 4 5 6 7 8 9b=1.0000 1.0000+2.0000i 2.0000+3.0000i 0.3679常用的初等矩阵常用的初等矩阵 函数名称函数名称功能功能zeros(m,n)m mn n全零矩阵全零矩阵ones(m,n)m mn n全全1 1矩阵矩阵eye(n
18、)n nn n 单位矩阵单位矩阵rand(m,n)m mn n随机矩阵,随机矩阵,0 0 1 1之间均匀分布之间均匀分布(2 2)矩阵的常规运算)矩阵的常规运算加加(+)减减(-)乘乘(*)点乘点乘(.*)乘方乘方()点乘方点乘方(.)右除右除(/)左除左除()()点除点除(./)矩阵转置矩阵转置()矩阵求逆矩阵求逆inv()()矩阵的行列式运算矩阵的行列式运算det()注意注意 矩阵的四则运算必须复合矩阵的维数要矩阵的四则运算必须复合矩阵的维数要求,否则会给出矩阵维数错误提示。求,否则会给出矩阵维数错误提示。例例2-3 2-3 矩阵加法与乘法。输入以下矩阵加法与乘法。输入以下MATLABMA
19、TLAB语句语句a=1 2 1;2 2 1;3 1 2;b=3 3 1;3 2 1;1 4 3;c=a+bd=a*b 运行程序,得到结果:运行程序,得到结果:c=4 5 2 5 4 2 4 5 5d=10 11 6 13 14 7 14 19 10例例2-4 2-4 矩阵的点运算。输入以下矩阵的点运算。输入以下MATLABMATLAB语句语句运行程序,得到结果:运行程序,得到结果:a=1 2 1;2 2 1;3 1 2;b=3 3 1;3 2 1;1 4 3;c=a.*bd=a.b c=3 6 1 6 4 1 3 4 6d=1 8 1 8 4 1 3 1 8例例2-5 2-5 矩阵右除与左除。
20、输入以下矩阵右除与左除。输入以下MATLABMATLAB语句语句a=1 2 1;2 2 1;2 1 2;b=1;2;3;a/b%矩阵右除矩阵右除运行程序,得到结果:运行程序,得到结果:?Error using=mrdivideMatrix dimensions must agree.ab%矩阵左除矩阵左除重新输入语句重新输入语句ans=1.0000 -0.3333 0.6667a=1 2 1;2 2 1;2 1 2;b=1;2;3;a/b%矩阵右除矩阵右除运行程序,得到结果:运行程序,得到结果:例例2-6 2-6 矩阵转置与逆矩阵。输入以下矩阵转置与逆矩阵。输入以下MATLABMATLAB语句
21、语句a=0 1 0;0 0 1;-6-11-6;az=aai=inv(a)运行程序,得到结果:运行程序,得到结果:az=0 0 -6 1 0 -11 0 1 -6ai=-1.8333 -1.0000 -0.1667 1.0000 0 0 0 1.0000 0(3 3)矩阵特征值运算)矩阵特征值运算矩阵条件数矩阵条件数cond()矩阵范数矩阵范数norm()矩阵的秩矩阵的秩rank()矩阵的迹矩阵的迹trace trace()矩阵特征值矩阵特征值eig()矩阵奇异值矩阵奇异值svdsvd ()例例2-7 2-7 分别计算矩阵分别计算矩阵a a的有关特征参数。输入以下的有关特征参数。输入以下MAT
22、LABMATLAB语句语句a=1 2 3;4 5 6;7 8 0 cond(a),norm(a),rank(a)运行程序,得到结果:运行程序,得到结果:ans=35.1059 13.2015 3.00004.4.关系运算和逻辑运算关系运算和逻辑运算MATLABMATLAB的关系运算符的关系运算符 操作符操作符说明说明相对应的函数相对应的函数操作符操作符说明说明相对应的函数相对应的函数 小于小于lt(a,b)=大于大于gt(a,b)=大于等于大于等于ge(a,b)=等于等于eq(a,b)=不等于不等于ne(a,b)说明说明 a a和和b b可以都是矩阵或数组,它们的大小完全相同。对于关可以都是矩
23、阵或数组,它们的大小完全相同。对于关系和逻辑表达式的输出来说,系和逻辑表达式的输出来说,1 1表示表示“真真”,而,而0 0则表示则表示“假假”。关系操作是对矩阵或数组各自相对应的元素进行比较,返回的关系操作是对矩阵或数组各自相对应的元素进行比较,返回的结果与两相比较的矩阵或数组的大小相同的结果与两相比较的矩阵或数组的大小相同的0 0、1 1阵。阵。例例2-8 2-8 比较矩阵的大小。输入以下比较矩阵的大小。输入以下MATLABMATLAB语句语句a=1 6 12;3 32 7;b=2 3 4;6 7 8;c=gt(a,b)运行程序,得到结果:运行程序,得到结果:c=0 1 1 0 1 0说明
24、说明 对于复数运算,对于复数运算,“=”=”与与“=”=”运算,既比较实部,运算,既比较实部,又比较虚部。而其他运算仅比较实部。关系运算同样也可用于又比较虚部。而其他运算仅比较实部。关系运算同样也可用于常量与矩阵的比较,在这种情况下,该常量与矩阵的每一个元常量与矩阵的比较,在这种情况下,该常量与矩阵的每一个元素进行比较,其结果是一个与矩阵同维数的素进行比较,其结果是一个与矩阵同维数的0 0、1 1矩阵。矩阵。逻辑操作符逻辑操作符 逻辑操作符逻辑操作符说说 明明相对应函数相对应函数&逻辑与逻辑与and(a,b)|逻辑或逻辑或or(a,b)逻辑非逻辑非not(a)逻辑异或。逻辑异或。a a与与b
25、b都是非零或都是零返都是非零或都是零返回回0 0;有一个非零返回;有一个非零返回1 1xor(a,b)向量向量a a中有非零元素返回中有非零元素返回1 1;矩阵;矩阵a a中某中某列有非零元素时,此列返回列有非零元素时,此列返回1 1any(a)向量向量a a中所有元素非零时返回中所有元素非零时返回1 1;矩阵;矩阵a a中某列所有元素非零时,此列返回中某列所有元素非零时,此列返回1 1all(a)例例2-9 2-9 矩阵的逻辑与、或、非运算。输入以下矩阵的逻辑与、或、非运算。输入以下MATLABMATLAB语句语句x=0 1;1 0;y=0 0;1 0;x&yx|ynot(x)运行程序,运行
26、程序,得到结果:得到结果:ans=0 0 1 0ans=0 1 1 0ans=1 0 0 15.5.多项式运算多项式运算多项式求根多项式求根roots()多项式生成多项式生成poly()卷积与多项式乘卷积与多项式乘conv()反卷积与多项式除反卷积与多项式除deconv()计算留数计算留数residue()多项式微分多项式微分polyder()多项式求值函数多项式求值函数polyval()例例2-10 2-10 输入以下输入以下MATLABMATLAB语句语句p=1 0-2-4;%输入多项式输入多项式r=roots(p)%求多项式求多项式P(x)=-2x 4的根的根3x3x运行程序,得到结果:
27、运行程序,得到结果:r=2.0000 -1.0000+1.0000i -1.0000-1.0000i例例2-11 2-11 输入以下输入以下MATLABMATLAB语句语句a=1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4;%输入矩阵输入矩阵poly(a)%求矩阵求矩阵a a的特征多项式的特征多项式polyval(ans,20)%求特征多项式中未知数为求特征多项式中未知数为2020时的值时的值 运行程序,得到结果:运行程序,得到结果:ans=1.0000 -6.9000 -77.2600 -86.1300 604.5500ans=7.2778e+004说明说明 矩阵
28、矩阵a a的特征多项式为的特征多项式为 55.60413.8626.779.6234xxxx当当x=20 x=20时,多项式的值为时,多项式的值为7277872778。例例2-12 2-12 已知控制系统的开环传递函数为已知控制系统的开环传递函数为)1()3)(2()(sssssG求系统的闭环特征方程并计算系统的闭环特征根。求系统的闭环特征方程并计算系统的闭环特征根。p0=conv(1,2,1,3)+conv(1,0,1,1)%求特征方程求特征方程p0=2 6 6p1=rref(p0)%行系数化简行系数化简p1=1 3 3r=roots(p1)%求特征根求特征根r=-1.5000+0.8660
29、i -1.5000-0.8660i输入语句输入语句说明说明 系统闭环特征方程系统闭环特征方程特征根特征根-1.5000+0.8660i,-1.5000-0.8660i6622 xx2.1.3 MATLAB2.1.3 MATLAB的绘图的绘图强大的图形功能是强大的图形功能是MATLABMATLAB受到人们广泛欢受到人们广泛欢迎的一个重要原因。迎的一个重要原因。MATLABMATLAB软件提供了丰软件提供了丰富的用于绘制图形、标注图形以及输出图富的用于绘制图形、标注图形以及输出图形的基本命令。形的基本命令。常用的有常用的有 二维图形二维图形三维图形三维图形1.1.二维图形二维图形(1 1)曲线绘图
30、函数)曲线绘图函数格式:格式:plot(x)plot(x1,y1,x2,y2)plot(x1,y1,plotstyle)plotplot函数是函数是MATLABMATLAB中绘制基本二维曲线图形的函中绘制基本二维曲线图形的函数,它的基本功能是打开一个新的图形窗口绘制数,它的基本功能是打开一个新的图形窗口绘制曲线。曲线。若已经存在一个图形窗口,则自动将该窗口的原若已经存在一个图形窗口,则自动将该窗口的原内容清除,然后再绘制新的图形。内容清除,然后再绘制新的图形。plot(x1,y1,x2,y2)绘制以绘制以(x1,y1),(x2,y2)确定的多条曲线。确定的多条曲线。plot(x1,y1,plo
31、tstyle)绘制由字符串绘制由字符串“plotstyle”定义的颜色、线型的定义的颜色、线型的多条曲线。其中多条曲线。其中“plotstyle”选项的部分表示如选项的部分表示如表表2-42-4所示。所示。选项选项颜颜 色色选项选项线线 型型y y黄色黄色-实线(默认值)实线(默认值)r r大红大红点点g g绿色绿色o o圆圆b b蓝色蓝色x x叉叉w w白色白色+十字十字k k黑色黑色*星星m m粉红粉红:虚线虚线c c亮蓝亮蓝-.-.点划线点划线-双点划线双点划线MATLABMATLAB绘图命令选项绘图命令选项 title(字符串字符串)用于给图形添加标题,将字符串添加在图形上方的中部。用
32、于给图形添加标题,将字符串添加在图形上方的中部。xlabel(字符串字符串)用于对图形的用于对图形的x x轴进行说明,将字符串添加在图形轴进行说明,将字符串添加在图形x x轴下方。轴下方。ylabel(字符串字符串)用于对图形的用于对图形的y y轴进行说明,将字符串添加在图形轴进行说明,将字符串添加在图形y y轴左方。轴左方。text(x,y,字符串字符串)用于在图形指定位置(用于在图形指定位置(x,yx,y)添加字符串对图形进行说明。)添加字符串对图形进行说明。(2 2)绘图辅助函数)绘图辅助函数gtext(字符串字符串)与与texttext功能类似,只是在执行命令后会在图形中出现一个十功能
33、类似,只是在执行命令后会在图形中出现一个十字线,可用鼠标来指定添加字符串的位置。字线,可用鼠标来指定添加字符串的位置。grid 用于给图形添加栅格,有用于给图形添加栅格,有3 3种格式:种格式:grid on;给图形添加栅格给图形添加栅格 grid off;去除栅格去除栅格 grid;在添加栅格和去除栅格两种状态中切换在添加栅格和去除栅格两种状态中切换 axis()用于对绘图坐标系进行控制和修饰。常用格式:用于对绘图坐标系进行控制和修饰。常用格式:axis(equal)得到一个方正的坐标系得到一个方正的坐标系 axis(square)得到相同比例的坐标系得到相同比例的坐标系 axis(x1,x
34、2,y1,y2)指定指定x x坐标轴和坐标轴和y y 坐标轴的范围坐标轴的范围figure 创造新的图形窗口。创造新的图形窗口。hold 用于进行图形保持。想在已经存在的图形上添加曲线时,用于进行图形保持。想在已经存在的图形上添加曲线时,需用需用holdhold函数。调用格式与函数。调用格式与gridgrid类似。类似。subplot(mnp)用于在指定位置建立坐标,可实现在一个图形窗口内绘用于在指定位置建立坐标,可实现在一个图形窗口内绘制多个坐标系。制多个坐标系。subplot(mnpsubplot(mnp)表示将屏幕分割成表示将屏幕分割成m mn n个区个区域(域(m m和和n n均小于均
35、小于4 4),),p p代表当前绘图区域的序号,序号以代表当前绘图区域的序号,序号以从左到右,从上到下的顺序编号。从左到右,从上到下的顺序编号。例例2-13 2-13 单窗口多曲线子图绘制。输入以下单窗口多曲线子图绘制。输入以下MATLABMATLAB语句语句MATLAB 程序如下:程序如下:x=pi*(0:0.05:2);y1=sin(2*x);y2=cos(2*x);y3=y1+y2;y4=y1-y2;subplot(221);plot(x,y1,o);xlabel(a);grid;subplot(222);plot(x,y2,*);xlabel(b);grid;subplot(223);
36、plot(x,y3,-.);xlabel(c);grid;subplot(224);plot(x,y4);xlabel(d);grid;运行程序,得到结果:运行程序,得到结果:除了除了plotplot函数外,函数外,MATLABMATLAB中还设置了一些其它中还设置了一些其它的二维绘图函数,以绘制一些特定的图形。的二维绘图函数,以绘制一些特定的图形。(3 3)其它二维绘图函数)其它二维绘图函数下表给出了几个常用函数下表给出了几个常用函数绘绘 图图 函函 数数意意 义义常用调用格式常用调用格式bar二维条形图二维条形图bar(x,y)stem火柴杆图火柴杆图stem(x,y)compass罗盘图
37、罗盘图compass(x,y)errorbar误差限图误差限图errorbar(x,y,l,u)fill二维填充函数二维填充函数fill(x,y,c),c为填充颜色字符为填充颜色字符pie饼图饼图pie(y)polar极坐标图极坐标图polar(x,y)stairs阶梯图阶梯图stairs(x,y)loglog对数图对数图loglog(x,y)semilogxsemilogy半对数图半对数图semilogx(x,y)semilogy(x,y)二维绘图函数二维绘图函数 例例2-14 2-14 绘制极坐标曲线。输入以下绘制极坐标曲线。输入以下MATLABMATLAB语句语句t=0:0.01:2*p
38、i;r=sin(2*t).*cos(2*t);polar(t,r,r)MATLAB 程序如下:程序如下:运行程序,得到结果:运行程序,得到结果:2.2.三维图形三维图形MATLABMATLAB提供了各种各样的命令用于绘制三维图提供了各种各样的命令用于绘制三维图形。这里主要讨论三维绘图的基本方法和基本形。这里主要讨论三维绘图的基本方法和基本命令。命令。绘制三维曲线图的基本命令是绘制三维曲线图的基本命令是plot3 绘制三维曲面网线图的命令是绘制三维曲面网线图的命令是mesh 曲面绘图函数是曲面绘图函数是surf plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3,s3,
39、)用于三维多曲线绘图,其中用于三维多曲线绘图,其中xnxn,ynyn,znzn是向量或矩是向量或矩阵,阵,snsn是可选的字符串,用来指定颜色和线形。是可选的字符串,用来指定颜色和线形。mesh(X,Y,Z)根据矩阵根据矩阵X X,Y Y和和Z Z绘制彩色的空间三维网线图。绘制彩色的空间三维网线图。X X,Y Y和和Z Z中对应的元素映射为三维空间上的点,点与点中对应的元素映射为三维空间上的点,点与点之间用线段连接。其中网线的颜色随着网点高度的之间用线段连接。其中网线的颜色随着网点高度的改变而改变。改变而改变。曲面绘图函数曲面绘图函数surf的调用格式与的调用格式与mesh 完全一样完全一样例
40、例2-15 2-15 作三维柱面螺旋线。输入以下作三维柱面螺旋线。输入以下MATLABMATLAB语句语句t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);xlabel(sin(t)ylabel(cos(t)zlabel(t)gridMATLAB 程序如下:程序如下:运行程序,得到结果:运行程序,得到结果:例例2-16 2-16 阔边帽三维网线图。输入以下阔边帽三维网线图。输入以下MATLABMATLAB语句语句x=-8:0.5:8;y=x;X,Y=meshgrid(x,y);r=sqrt(X.2+Y.2)+eps;Z=sin(r)./r;mesh(X,Y,Z)MA
41、TLAB 程序如下:程序如下:运行程序,得到结果:运行程序,得到结果:例例2-17 2-17 绘制三维陀螺椎面。输入以下绘制三维陀螺椎面。输入以下MATLABMATLAB语句语句t1=0:0.1:0.9;t2=1:0.1:2;r=t1,-t2+2;X,Y,Z=cylinder(r,30);surf(X,Y,Z);colormap(jet)grid;MATLAB 程序如下:程序如下:运行程序,得到结果:运行程序,得到结果:2.1.4 MATLAB2.1.4 MATLAB循环与转移控制循环与转移控制大部分的求解问题都要受到一定条件的控制,大部分的求解问题都要受到一定条件的控制,和其它高级语言一样,
42、和其它高级语言一样,MATLABMATLAB也提供了一些也提供了一些常用的控制语句从而使得常用的控制语句从而使得MATLABMATLAB语言的编语言的编程显得十分灵活。程显得十分灵活。MATTABMATTAB支持的控制语句和支持的控制语句和C C语言中的控制语语言中的控制语句结构很相似,有循环控制语句和条件转移句结构很相似,有循环控制语句和条件转移控制语句。控制语句。1 1条件控制语句条件控制语句(1 1)if语句语句ifif语句是语句是MATLABMATLAB提供的最基本的条件转移语句,提供的最基本的条件转移语句,它用于根据一定的逻辑条件执行相应的一组语句。它用于根据一定的逻辑条件执行相应的
43、一组语句。格式格式 if expression statements endif expression 1 statements 1 elseif expression 2 statements 2elseif expression 3 statements 3else statements 4end例例2-18 2-18 根据一个整数的符号和奇偶性,分成三根据一个整数的符号和奇偶性,分成三种情况作不同的处理。种情况作不同的处理。if n0%如果如果n n是负数,显示错误信息是负数,显示错误信息 disp(Input must be positive);elseif rem(n,2)=0%如果
44、如果n n是正偶数,则除以是正偶数,则除以2 2 A n/2 else%如果如果n n为正奇数,则加为正奇数,则加1 1再除以再除以2 2 A(n+1)/2 endswitchswitch语句是语句是MATLABMATLAB特别让熟悉特别让熟悉C C等高级语等高级语言的用户方便地编写程序而专门添加的。言的用户方便地编写程序而专门添加的。其调用格式为:其调用格式为:(2 2)switchswitch语句语句switch expression case value1 statements1 case value2 statements2 otherwise statementsend其中其中exp
45、ressionexpression的值可以是标量和字符串。的值可以是标量和字符串。try statement,statement,catch,statements statements end(3 3)trytry和和tatchtatch语句语句try和和catch语句为试探式语句,其调用格式为:语句为试探式语句,其调用格式为:这种语句结构先试探执行这种语句结构先试探执行try和和catch之间的语句,之间的语句,如果在执行的过程中遇到错误,则把错误信息赋值给如果在执行的过程中遇到错误,则把错误信息赋值给lasterr变量,并放弃执行这一段语句,转而执行变量,并放弃执行这一段语句,转而执行ca
46、tch和和end之间的语句。之间的语句。2 2循环控制语句循环控制语句(1 1)forfor语句语句如果要反复执行的一组语句的循环次数是已知或预如果要反复执行的一组语句的循环次数是已知或预定义的,就可以使用定义的,就可以使用forfor循环语句。它的基本格式为:循环语句。它的基本格式为:for i=is:id:ie;statementsend其中:其中:isis是循环变量的初值;是循环变量的初值;idid是循环变量的增量;是循环变量的增量;ieie是循环变量的终值。是循环变量的终值。例例2-19 2-19 输入以下输入以下MATLABMATLAB语句语句a=zeros(1,10);n=10;f
47、or i1:na(i)=iend运行程序,得到结果:运行程序,得到结果:a=1 2 3 4 5 6 7 8 9 10for语句可以嵌套使用,例如:语句可以嵌套使用,例如:m=10;n=5;for i=1:m for j=1:nF(i,j)=1/(i+j-1);endendF运行程序,得到结果:运行程序,得到结果:F=1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0
48、.2000 0.1667 0.1429 0.1250 0.1111 0.1667 0.1429 0.1250 0.1111 0.1000 0.1429 0.1250 0.1111 0.1000 0.0909 0.1250 0.1111 0.1000 0.0909 0.0833 0.1111 0.1000 0.0909 0.0833 0.0769 0.1000 0.0909 0.0833 0.0769 0.0714值得注意的是:值得注意的是:每一个每一个forfor必须与必须与endend配对使用。配对使用。forfor命令输命令输入后,入后,MATLABMATLAB将继续等待循环体的输入,直将
49、继续等待循环体的输入,直至遇到至遇到endend结束循环体时,才开始执行结束循环体时,才开始执行forfor语语句。句。(2 2)whilewhile语句语句 while while循环控制语句的作用是在一定的逻辑条件循环控制语句的作用是在一定的逻辑条件控制下,不断地循环执行一条或一组语句,直到控制下,不断地循环执行一条或一组语句,直到逻辑条件不再满足时为止。它的基本格式为:逻辑条件不再满足时为止。它的基本格式为:while expression statements end例例2-20 2-20 找出使阶乘找出使阶乘n n!小于!小于1010的的100100次方的最次方的最小整数小整数 n
50、nn=1while prod(1:n)1e100 n=n+1endnMATLAB 程序如下:程序如下:运行程序,得到结果:运行程序,得到结果:n=70其中,其中,prod(1:n)prod(1:n)是计算向量是计算向量1 1:n n各元素之积。各元素之积。当然当然MATLABMATLAB提供的循环结构提供的循环结构for和和while是允许多级是允许多级嵌套的,而且它们之间也允许相互嵌套,这和嵌套的,而且它们之间也允许相互嵌套,这和C C语言语言等高级程序设计语言是一致的。等高级程序设计语言是一致的。在程序设计中,经常会碰到提前终止循环的操作。在程序设计中,经常会碰到提前终止循环的操作。MAT