控制系统CAD-基于MATLAB语言第2章-M课件_第1页
控制系统CAD-基于MATLAB语言第2章-M课件_第2页
控制系统CAD-基于MATLAB语言第2章-M课件_第3页
控制系统CAD-基于MATLAB语言第2章-M课件_第4页
控制系统CAD-基于MATLAB语言第2章-M课件_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章MATLAB与Simulink简介2.1MATLAB的基础知识2.1.1MATLAB语言系统1.MATLAB简介MATLAB(MATrixLABoratory,即矩阵实验室)是美国的CleveMoler教授利用自己研制的基于特征值计算和线性代数软件包开发的一种高级语言。

1990年推出的MATLAB3.5i是第一个可以运行于MicrosoftWindows下的版本,它可以在两个窗口上分别显示命令行计算结果和图形结果。稍后推出的SimuLAB环境首次引入基于框图的仿真功能,该环境就是我们现在所知的Simulink,其模型输入的方式使得一个复杂的控制系统的数字仿真问题变得十分直观而且相当容易。

经过多年来版本的不断更新,新版本的MATLAB功能已经十分强大,其应用领域日益广泛,速度更快,数值性能更好;用户图形界面设计更趋合理;与C语言接口及转换的兼容性更强;新的虚拟现实工具箱更给仿真结果三维视景下显示带来了新的解决方案。MATLAB具有以下主要特点:(1)超强的数值运算功能。(2)语法限制不严格,程序设计自由度大。(3)程序的可移植性很好。

(4)强大的数据可视化功能。

(5)丰富的工具箱。

2.MATLAB工作环境图形窗口“Figure”

M文件窗口

3.MATLAB的M文件所谓M文件,就是用户把要实现的命令写在一个以.m为扩展名的文件中M文件有两种格式(统称为M文件)函数式M文件程序式M文件程序式M文件用于把很多需要在命令窗口输入的命令放在一起,就是命令的简单叠加函数式M文件用于把重复的程序段封装成函数供用户调用。(1)程序式M文件运行程序,得到结果:(2)函数式M文件函数式M文件首行总是以关键字“function”开头,并在首行中列出全部输入、输出参数以及函数名。函数名应置于等号右侧并与对应的M文件名相同,输出参数紧跟在“function”之后,常用中括号括起来(若仅有一个输出参数则无需中括号);输入参数紧跟在函数名之后,常用小括号括起来。如果函数有多个输入或输出参数,则多个参数之间用英文状态下的逗号加以分隔。c=5运行程序,得到结果:4.MATLAB的帮助系统MATLAB具有完善的帮助系统,帮助内容丰富,获取帮助的形式多样。帮助系统包括:命令行帮助联机帮助演示帮助充分利用帮助系统,可以更快更准确地掌握MATLAB的使用方法。

命令行帮助help工具箱或命令名

联机帮助演示帮助2.1.2MATLAB的基本运算1.MATLAB的基本语句结构(1)变量变量命名的规则为:1)变量的名称必须以字母开头,其后可以为字母、数字或者下划线。2)变量名长度不超过63个字符,超过的部分将会被忽略。3)变量名区分字母的大小写;MATLAB中还设置了如下一些特殊变量:ans计算结果默认的变量名eps浮点数相对精度变量pi圆周率Inf正无穷大变量,由n/0或者溢出产生NaN不确定量,由0/0或者∞-∞产生i或j虚数单位变量realmax最大可用正实数,realmax=1.7977e+308realmin最小可用正实数,realmin=2.2251e-308

MATAB语言的赋值语句有两种:

·变量名=运算表达式·[返回变量列表]=函数名(输入变量列表)例如

>>T=0:pi/50:2*pi;>>[m,p]=bode(a,b,c,d,w)(2)赋值语句说明等号右边的表达式可以由分号结束,也可以由逗号或换行号结束,但它们的含义是不同的。如果用分号结束,则左边的变量结果将不在屏幕上显示出来;由逗号或换行号结束,则将把左边的返回值内容全部显示出来。

在调用函数时,MATLAB允许一次返回多个结果,当函数的输出参数不只一个时,用中括号“[]”把输出参数括起来,参数之间用逗号分开;输入变量用小括号“()”括起来,当个数不只一个时,用逗号分开。

在MATLAB中,冒号“:”是很有用的算子,经常用它来生成向量。语句>>a=i:k:j;它生成一个从i到j步长为k的行向量a。如果增量为负值,可以得一个递减顺序的向量,增量为l时可以忽略。MATLAB用通常的十进制数表示常数、小数和负数。与通常的数学表示一样,还可以使用以10为幂的常数以及虚数,MATLAB接受各种合法的数据输入。

(3)数据的输入输出格式(4)常用操作命令clc清除命令窗口的内容,对工作环境中的全部变量无任何影响clear清除工作空间的所有变量clearall清除工作空间的所有变量、函数和MEX文件save将工作空间里的变量保存到磁盘文件load将磁盘文件里的变量加载到工作空间close关闭当前的Figure窗口closeall关闭所有的Figure窗口what列出当前目录下所有的M文件which显示出某个MATLAB函数的路径dir查询当前目录下所有的文件type在命令窗口显示文件cd删除文件cdpath显示当前目录delete进入目录2.MATLAB的基本运算加(+)、减(-)、乘(*)、除(/)、幂(^)等运算操作

MATLAB还提供几乎所有的运算函数

初等运算函数

方根函数sqrt()自然指数函数exp()自然对数函数(以e为底)log()以10为底的对数函数log10()最大公因子gcd()最小公倍数lcm()符号函数sign()复数的模abs()复数的幅角angle()复数共轭运算conj()三角函数

正弦函数sin()余弦函数cos()正切函数tan()反正弦函数asin()反余弦函数acos()反正切函数atan()双曲正弦函数sinh()反双曲正弦函数asinh()数据统计分析函数

最大值max()最小值min()计算平均值mean()计算中间值median()求和sum()计算元素之积prod()元素排序sort()例2-1某二阶欠阻尼系统的单位阶跃响应为试绘制响应曲线。MATLAB程序如下:

t=0:0.1:15;c=1-1.15*exp(-0.5*t).*sin(0.866*t+pi/3);plot(t,c);grid;

%绘制曲线由max函数可求出响应的最大值(峰值)

MATLAB程序如下:

mp=max(c)

运行程序,得到结果:mp=1.1623运行程序,得到结果:3.矩阵运算MATLAB中所有的计算都是以矩阵为基本单元进行的,MATLAB对矩阵的运算功能最齐全,也最强大。(1)矩阵输入矩阵输入时一行中各元素间用逗号“,”或空格,行间用分号“;”或直接回车,整个矩阵以括号“[”和“]”表示开始和结束。例2-2输入以下MATLAB语句a=[123;456;789]b=[1,1+2i;2+3i,exp(-1)]

运行程序,得到结果:a=123456789b=1.00001.0000+2.0000i2.0000+3.0000i0.3679常用的初等矩阵

函数名称功能zeros(m,n)

m×n全零矩阵ones(m,n)m×n全1矩阵eye(n)n×n

单位矩阵rand(m,n)m×n随机矩阵,0~1之间均匀分布(2)矩阵的常规运算加(+)减(-)乘(*)点乘(.*)乘方(^)点乘方(.^)右除(/)左除(\)点除(./)矩阵转置(’)矩阵求逆inv()矩阵的行列式运算det()注意矩阵的四则运算必须复合矩阵的维数要求,否则会给出矩阵维数错误提示。

例2-3矩阵加法与乘法。输入以下MATLAB语句a=[121;221;312];b=[331;321;143];c=a+bd=a*b运行程序,得到结果:c=452542455d=1011613147141910例2-4矩阵的点运算。输入以下MATLAB语句运行程序,得到结果:a=[121;221;312];b=[331;321;143];c=a.*bd=a.^b

c=361641346d=181841318例2-5矩阵右除与左除。输入以下MATLAB语句a=[121;221;212];b=[1;2;3];a/b

%矩阵右除运行程序,得到结果:???Errorusing==>mrdivideMatrixdimensionsmustagree.a\b

%矩阵左除重新输入语句ans=1.0000-0.33330.6667a=[121;221;212];b=[1;2;3];a/b

%矩阵右除运行程序,得到结果:例2-6矩阵转置与逆矩阵。输入以下MATLAB语句a=[010;001;-6-11-6];az=a‘ai=inv(a)运行程序,得到结果:az=00-610-1101-6ai=-1.8333-1.0000-0.16671.00000001.00000(3)矩阵特征值运算矩阵条件数cond()矩阵范数norm()矩阵的秩rank()矩阵的迹trace()矩阵特征值eig()矩阵奇异值svd

()例2-7分别计算矩阵a的有关特征参数。输入以下MATLAB语句a=[123;456;780][cond(a),norm(a),rank(a)]

运行程序,得到结果:ans=35.105913.20153.00004.关系运算和逻辑运算MATLAB的关系运算符

操作符说明相对应的函数操作符说明相对应的函数<小于lt(a,b)<=小于等于le(a,b)>大于gt(a,b)>=大于等于ge(a,b)==等于eq(a,b)~=不等于ne(a,b)说明

a和b可以都是矩阵或数组,它们的大小完全相同。对于关系和逻辑表达式的输出来说,1表示“真”,而0则表示“假”。关系操作是对矩阵或数组各自相对应的元素进行比较,返回的结果与两相比较的矩阵或数组的大小相同的0、1阵。例2-8比较矩阵的大小。输入以下MATLAB语句a=[1612;3327];b=[234;678];c=gt(a,b)运行程序,得到结果:c=011010说明对于复数运算,“==”与“~=”运算,既比较实部,又比较虚部。而其他运算仅比较实部。关系运算同样也可用于常量与矩阵的比较,在这种情况下,该常量与矩阵的每一个元素进行比较,其结果是一个与矩阵同维数的0、1矩阵。

逻辑操作符

逻辑操作符说明相对应函数&逻辑与and(a,b)|逻辑或or(a,b)~逻辑非not(a)逻辑异或。a与b都是非零或都是零返回0;有一个非零返回1xor(a,b)向量a中有非零元素返回1;矩阵a中某列有非零元素时,此列返回1any(a)向量a中所有元素非零时返回1;矩阵a中某列所有元素非零时,此列返回1all(a)例2-9矩阵的逻辑与、或、非运算。输入以下MATLAB语句x=[01;10];y=[00;10];x&yx|ynot(x)运行程序,得到结果:ans=0010ans=0110ans=10015.多项式运算多项式求根roots()多项式生成poly()卷积与多项式乘conv()反卷积与多项式除deconv()计算留数residue()多项式微分polyder()多项式求值函数polyval()例2-10输入以下MATLAB语句p=[10-2-4];%输入多项式r=roots(p)%求多项式P(x)=-2x–4的根运行程序,得到结果:r=2.0000-1.0000+1.0000i-1.0000-1.0000i例2-11输入以下MATLAB语句a=[1.2350.9;51.756;3901;1234];%输入矩阵poly(a)%求矩阵a的特征多项式polyval(ans,20)%求特征多项式中未知数为20时的值

运行程序,得到结果:ans=1.0000-6.9000-77.2600-86.1300604.5500ans=7.2778e+004说明矩阵a的特征多项式为

当x=20时,多项式的值为72778。例2-12已知控制系统的开环传递函数为求系统的闭环特征方程并计算系统的闭环特征根。p0=conv([1,2],[1,3])+conv([1,0],[1,1])%求特征方程p0=266>>p1=rref(p0)%行系数化简p1=133>>r=roots(p1)%求特征根r=-1.5000+0.8660i-1.5000-0.8660i输入语句说明系统闭环特征方程特征根-1.5000+0.8660i,-1.5000-0.8660i2.1.3MATLAB的绘图强大的图形功能是MATLAB受到人们广泛欢迎的一个重要原因。MATLAB软件提供了丰富的用于绘制图形、标注图形以及输出图形的基本命令。常用的有

二维图形三维图形1.二维图形(1)曲线绘图函数格式:plot(x)plot(x1,y1,x2,y2…)plot(x1,y1,’plotstyle’…)

plot函数是MATLAB中绘制基本二维曲线图形的函数,它的基本功能是打开一个新的图形窗口绘制曲线。

若已经存在一个图形窗口,则自动将该窗口的原内容清除,然后再绘制新的图形。

·plot(x1,y1,x2,y2…)

绘制以(x1,y1),(x2,y2)…确定的多条曲线。·plot(x1,y1,’plotstyle’…)

绘制由字符串“plotstyle”定义的颜色、线型的多条曲线。其中“plotstyle”选项的部分表示如表2-4所示。选项颜色选项线型y黄色-实线(默认值)r大红·点g绿色o圆b蓝色x叉w白色+十字k黑色*星m粉红:虚线c亮蓝-.点划线--双点划线MATLAB绘图命令选项

·title(‘字符串’)用于给图形添加标题,将字符串添加在图形上方的中部。·xlabel(‘字符串’)用于对图形的x轴进行说明,将字符串添加在图形x轴下方。·ylabel(‘字符串’)用于对图形的y轴进行说明,将字符串添加在图形y轴左方。

·text(x,y,‘字符串’)用于在图形指定位置(x,y)添加字符串对图形进行说明。·(2)绘图辅助函数gtext(‘字符串’)与text功能类似,只是在执行命令后会在图形中出现一个十字线,可用鼠标来指定添加字符串的位置。

·grid

用于给图形添加栅格,有3种格式:

>>gridon;

给图形添加栅格

>>gridoff;

去除栅格

>>grid;

在添加栅格和去除栅格两种状态中切换·axis()

用于对绘图坐标系进行控制和修饰。常用格式:

>>axis(‘equal’)

得到一个方正的坐标系

>>axis(‘square’)

得到相同比例的坐标系

>>axis([x1,x2,y1,y2])

指定x坐标轴和y坐标轴的范围·figure

创造新的图形窗口。·hold

用于进行图形保持。想在已经存在的图形上添加曲线时,需用hold函数。调用格式与grid类似。·subplot(mnp)

用于在指定位置建立坐标,可实现在一个图形窗口内绘制多个坐标系。subplot(mnp)表示将屏幕分割成m×n个区域(m和n均小于4),p代表当前绘图区域的序号,序号以从左到右,从上到下的顺序编号。例2-13单窗口多曲线子图绘制。输入以下MATLAB语句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);plot(x,y3,'-.');xlabel('(c)');grid;subplot(224);plot(x,y4);xlabel('(d)');grid;运行程序,得到结果:除了plot函数外,MATLAB中还设置了一些其它的二维绘图函数,以绘制一些特定的图形。(3)其它二维绘图函数下表给出了几个常用函数绘图函数意义常用调用格式bar二维条形图bar(x,y)stem火柴杆图stem(x,y)compass罗盘图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绘制极坐标曲线。输入以下MATLAB语句t=0:0.01:2*pi;r=sin(2*t).*cos(2*t);polar(t,r,'r')MATLAB程序如下:运行程序,得到结果:2.三维图形MATLAB提供了各种各样的命令用于绘制三维图形。这里主要讨论三维绘图的基本方法和基本命令。绘制三维曲线图的基本命令是plot3

绘制三维曲面网线图的命令是mesh

曲面绘图函数是surf

plot3(x1,y1,z1,’s1’,x2,y2,z2,’s2’,x3,y3,z3,‘s3’,…)用于三维多曲线绘图,其中xn,yn,zn是向量或矩阵,sn是可选的字符串,用来指定颜色和线形。mesh(X,Y,Z)

根据矩阵X,Y和Z绘制彩色的空间三维网线图。X,Y和Z中对应的元素映射为三维空间上的点,点与点之间用线段连接。其中网线的颜色随着网点高度的改变而改变。曲面绘图函数surf的调用格式与mesh完全一样例2-15作三维柱面螺旋线。输入以下MATLAB语句t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);xlabel('sin(t)')ylabel('cos(t)')zlabel('t')gridMATLAB程序如下:运行程序,得到结果:例2-16阔边帽三维网线图。输入以下MATLAB语句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)MATLAB程序如下:运行程序,得到结果:例2-17绘制三维陀螺椎面。输入以下MATLAB语句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.4MATLAB循环与转移控制大部分的求解问题都要受到一定条件的控制,和其它高级语言一样,MATLAB也提供了一些常用的控制语句.从而使得MATLAB语言的编程显得十分灵活。MATTAB支持的控制语句和C语言中的控制语句结构很相似,有循环控制语句和条件转移控制语句。1.条件控制语句(1)if语句if语句是MATLAB提供的最基本的条件转移语句,它用于根据一定的逻辑条件执行相应的一组语句。

格式ifexpressionstatementsendifexpression1statements1elseifexpression2statements2elseifexpression3statements3elsestatements4end例2-18根据一个整数的符号和奇偶性,分成三种情况作不同的处理。ifn<0

%如果n是负数,显示错误信息

disp(‘Inputmustbepositive’);

elseifrem(n,2)==0

%如果n是正偶数,则除以2

A=n/2else

%如果n为正奇数,则加1再除以2

A=(n+1)/2

endswitch语句是MATLAB特别让熟悉C等高级语言的用户方便地编写程序而专门添加的。其调用格式为:(2)switch语句switchexpressioncasevalue1statements1casevalue2statements2 …otherwisestatementsend其中expression的值可以是标量和字符串。trystatement,…statement,catch,statements…statementsend(3)try和tatch语句try和catch语句为试探式语句,其调用格式为:

这种语句结构先试探执行try和catch之间的语句,如果在执行的过程中遇到错误,则把错误信息赋值给lasterr变量,并放弃执行这一段语句,转而执行catch和end之间的语句。2.循环控制语句(1)for语句如果要反复执行的一组语句的循环次数是已知或预定义的,就可以使用for循环语句。它的基本格式为:fori=is:id:ie;

statementsend其中:

is是循环变量的初值;

id是循环变量的增量;

ie是循环变量的终值。

例2-19输入以下MATLAB语句a=zeros(1,10);n=10;fori=1:na(i)=iend运行程序,得到结果:a=1234

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论