系统分析与控制(共14页).doc
《系统分析与控制(共14页).doc》由会员分享,可在线阅读,更多相关《系统分析与控制(共14页).doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上系统分析与控制实验指导书石油大学机电教研室二年四月第三篇 MATLAB语言应用一、概述MATLAB是以复数矩阵作为基本编程单元的一种程序设计语言,它提供了矩阵的运算与操作。并有较强的绘图功能,已成为国际上最流行的控制系统CAD的软件工具。不仅流行于控制界,在生物医学语言图像处理,分析,计算机技术等各行各业也有广泛应用。MATLAB是一个功能极强的高度集成化程序设计语言。它具备一般程序设计语言的基本语句结构。但功能更强,这是C或FORTRAN语言无法比拟的。由于MATLAB提供了强大的矩阵处理和绘图功能,控制界学者将自己擅长的CSCAD方法用MATLAB加以实现,出现了
2、大量的MATLAB配套工具箱。如控制界流行的控制系统工具箱(control systems toolbox),系统辨识工具箱(system identification toolbox),鲁棒控制工具箱(robust control toolbox),多变量频域设计工具箱(multivariable frequency design toolbox),最优化工具箱(optimization toolbox),信号处理工具箱(signal processing toolbox)以及仿真环境SIMULINK。这使得MATLAB风靡国际控制界。值得一提的是,1990年MathWorks软件公司为MA
3、TLAB提供了新的控制系统模型图形输入与仿真工具,原名为SIMULAB,该工具很快在控制界就有了广泛的使用。1992年以来正式改名为SIMULINK,这一名字的含义是相当直观的,因为它较明显地表明此软件的两个显著的功能:SIMU(仿真)与LINK(连接),亦即可以利用鼠标器在模型窗口上“画出所需的控制系统模型,然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。这种做法的一个优点是,可以使得一个很复杂系统的输入变得相当容易且直观。MATLAB 4.x 版本运行在microsoft windows 环境,在MATLAB语言环境下,标志为MATLAB的命令提示符,MATLAB命令窗口的
4、界面下,有一个菜单条,其中提供了很多功能,在命令行键入DEMO命令,它将启动演示程序,从而领略MATLAB的强大运算和绘图功能。二、MATLAB的基本语句结构MATLAB实际上可以认为是一种解释性语言,在MATLAB工作环境下,键入一个命令或程序,MATLAB对它进行处理,最后返回运算结果。2.1 MATLAB语言最基本的赋值语言结构为:变量名列表表达式左边为返回值,右边是表达式定义,可以是矩阵运算,也可以包含MATLAB下的函数调用。表达式可以由分号结束,也可以由逗号或换行符结束,但含义不同,如以分号结束则左边变量结果将不显示,否则将把左边返回矩阵的内容全部显示出来。和C语言类似,MATLA
5、B是区分大小写的(case-sensitive)。MATLAB 和C语言不同,在调用函数时MATLAB可以返回多个结果(亦即多个矩阵),这时等号左边是由 括起来的矩阵列表,例如:m, p = bode(n, d, w)中调用了控制系统工具箱的bode( )函数来求取传递函数n, d在指定的频率段w内的幅值响应m和相位响应p。MATLAB 函数调用时输入输出变量分别在等号两边列出,这种记号很容易记忆。也可以采用下面格式调用m, p = bode(a, b, c, d, 1, w)其中a, b, c, d, 为系统的状态方程描述,MATLAB会自动地从输入参数个数上判定给出的是传递函数还是状态方程
6、模型,从而进行正确计算,这类似于C中重载的观念。2.2 矩阵的输入输入格式为 A=1,2,3;4,5,6;7,8,0A 1 2 3 4 5 6 7 8 0其中同一行中的内容用逗号分隔,而采用分号来表示换行。上述格式输入矩阵A后,矩阵内容将在屏幕上显示出来。如在上面赋值表达式的末尾加一个分号,这矩阵内容就不显示了。这由用户通过在语句末尾加分号的方式来决定是否显示运算结果。同一行中分隔的逗号也可以由空格来代替。如下方式也是许可的 A=1 2 3; 4 5 6 7 8 9;或 A=1 2 3; 4,5, 6;7 8,9;向量的输入是一般矩阵输入的特殊情况,下面的两条命令分别定义了行和列向量 V1=1
7、 2 3,4 V2=1;2;3;4学会了矩阵的基本表示方法后,就容易理解下面的输入方式和结果了 A=A;1 3 5MATLAB 定义了两个基本的复数常量,i和j, 这些值为数学上的。如果它们不被赋值,则将保留这种定义。如果重新赋值,将保留新的值,如采用MATLAB命令a=sqrt(-1)则也定义了a 为复数常量。在MATLAB下43*i的赋值命令将得出4.0000+3.0000i的结果,而利用前面的A矩阵,在输入命令A+ones(size(A)*i 后得到一个复数矩阵,注意不能在一个复数元素之内加空格,如1 +2*i, 2 赋值表达式因在1和 +2*i之间无意多留一个空格,将被错误解释成含有三
8、个元素的向量。 A+ones (size(A)*ians=在变量赋值语句中,等号左边的矩阵名列表和等号一起可以省略,这时将把返回的矩阵名设置为ans变量。 ans 是保留的MATLAB字符串,它表示上面一个式子的返回结果。其它保留字符有:判断0元素的误差限eps, 其默认值eps=2.220410-16,用户可以用eps=eps10修正。pi表示圆周率pinf 表示无穷大,MATLAB允许最大数值为1.10308, inf的一个计算方法为1/0,这种计算在MATLAB中是允许的。NaN常量,它是一个不定式(Not a Number),由inf/inf或 0/0产生的。在MATLAB中这样的矩阵
9、赋值A1 2 inf; 1 2 5是允许的。 A=1 2 inf;1 2 5它与列向量B1;2;3乘积为A*Bans=inf202.3 矩阵的基本运算与控制语句矩阵的加减:CAB和CAB ,如A和B 矩阵维数相同这执行运算。矩阵的转置:BA,即BAT,这一运算包括复数矩阵的运算。A=5+i,2-i,1;6*i,4,9-i; B=A矩阵的翻转处理:Bfliplr(A); Cflipud(A); Drot90(A),分别表示左右、上下和旋转90度的翻转处理。矩阵的乘法:CA*B;A为nm矩阵,B为mr矩阵,C为nr矩阵。矩阵的乘方运算:BAx,A矩阵为方阵。 A2A0.1A=1 2 3;4 5 6
10、;7 8 0;B=2 3 4;5 6 7;8 9 0矩阵的点运算:CA.*B,表示A和B矩阵的元素直接相乘。方阵的求逆:Binv(A)矩阵的除法:左除AB,表示线性方程AXB的解X,即XA-1B。右除A/B,其定义为BA-1。单个矩阵元素的赋值与运算:A(2,3)=100;它只改变该元素的值,不影响其它元素的值。如行或列数大于原来矩阵范围,这时MATLAB自动扩展原来矩阵,将扩展后没赋值的矩阵元素置为0。A(4,5)=8命令执行结果就可从屏幕看到。冒号表达式:s1:s2:s3,其中s1为起始值,s2为步距,s3为终止值,此命令产生一个行向量,如s2 不给出,认为步距为1,A(: , j)表示A
11、矩阵第j列全部元素,A(i , :) 表示A矩阵第i行全部元素,A(1:2 , 2:4 )表示对A矩阵取第一行和第二行内,并在第二列到第四列中的所有元素构成的子矩阵,观察下面命令运行结果。A(2:3, 1:2:5)逻辑运算:MATLAB支持逻辑运算及不定式处理,它使用逻辑运算符&,| 和 分别表示“与”,“或”和“非”等逻辑运算。MATLAB控制语句有循环语句(for语句、while 语句)和if条件转移语句与C语言大同小异。如for 语句为:for 循环变量表达式1:表达式2:表达式3循环语句组endwhile (条件式)循环语句组endMATLAB的多项式函数:多项式求值polyval(p
12、,x0); 多项式求导polyder(p);求解多项式方程的根roots(p)。其中输入向量p是多项式系数降幂排列构成的向量。MATLAB提供了丰富的编程语句结构和实用函数,MATLAB本身编写出来的具有特殊目的程序(或M函数),其文件后缀名均为.M,这些文件都是由纯ASCII字符构成的,MATLAB下的M文件可以直接执行,这时只需在命令提示符下键入该文件名即可,MATLAB下的大多数应用程序都是由M函数形式给出, 如求取矩阵特征多项式的函数poly()和求取伴随矩阵的函数compan()等,除了M函数外,MATLAB还提供了大量底层的内部函数,如求取特征值的函数eig(),奇异值分解的函数s
13、vd()等,这类文件是不可读的。MATLAB允许用户调用可执行文件.exe,调用方式为在提示符下键入惊叹号!,后面直接跟可执行文件的文件名或DOS命令即可,如可由!chkdsk命令来直接大于DOS 下的chkdsk.exe文件。其它DOS命令也一样直接调用。MATLAB已把一些常用的DOS命令做成相应的MATLAB命令,如DIR命令。在规定的格式下,MATLAB也支持用户用C语言或FORTRAN语言编写的程序。MATLAB工作空间及变量管理:MATLAB以复数矩阵为基本编程单元,用户可以直接使用一个矩阵,不必显式指明矩阵的维数。一个矩阵维数可用size()函数来测取,调用格式为n,m=size
14、(A)如等号左边只返回一个参数,这返回的参数是一个12的行向量,两个元素分别为矩阵A的行数和列数。同样的n=length(A)返回A向量的元素个数或A矩阵行列数中的最大值,等效于max(size(A)。如用户查看目前工作空间的变量名,可用who命令来完成。who了解这些变量的具体细节,则可用whos命令查看whos分别列出变量名(Name),矩阵大小(Size),元素个数(Element),字节数(Bytes),表现密度(Density: 完整FULL或稀疏度),有无复数(Complex)等,用户可用clear命令删除一些不再使用的变量,clear a c将删除工作空间中的a和c变量。a和c之
15、间不能加逗号,否则将被解释成删除a变量后,显示变量c内容,而不是删除c变量。exist()函数查询工作空间是否存在一个变量,格式为:i=exit(字符串),如i=exist(A);i的值不是A存在形式,1表示一个变量名为A的矩阵,2表示工作路径下存在一个A.m的文件,3表示MEX文件,4表示SIMULINK文件,5表示一个内部函数A(),0表示不存在和A有关的变量和文件。MATLAB下数值显示精度默认值为 4位有效数字,这一显示精度可用format 命令来控制。输入输出语句:Ainput(提示信息,选项);如Ainput(enter matrix A =);表示首先给出提示后,等待用户输入A矩
16、阵,input()如常用s选项,则允许用户输入一个字符串。disp(A)其中A既可用为 字符串也可以为矩阵,如A=Hello,world”;disp(A)工作空间变量通过调用函数save命令可被保存到文件中,格式为save 文件名 变量列表 其它选项save mydat a b c 表示将工作空间的a,b,c变量保存到mydat.mat,mat为系统自动使用的数据文件扩展名,如保存全部工作空间变量应该用save mydat 命令。load 文件名此命令可以把矩阵数据从文件中调到工作空间来。MATLAB还提供了低级文件打开和处理命令,如fopen(), fclose(), sprintf(),这
17、同C语言几乎一致。MATLAB的联机帮助系统MATLAB提供了大量的函数和命令,通过help 命令可查询各个函数的有关信息,其格式为help 命令或函数名MATLAB还提供了关键词查询命令lookfor,例如若查出和矩阵分解(decomposition)有关的MATLAB和工具箱函数,则可运行 lookfor decomposition命令 lookfor decomposition2.4 MATLAB的绘图功能二维曲线绘制plot(x,y)x,y向量分别存放着X和Y轴的数据t=0:.1:2*pi;y=sin(t);plot(t,y)将绘制出正弦曲线。t=0:.1:2*pi;y=sin(t);
18、cos(t);plot(t,y)将绘制出正余弦两组曲线。在彩色显示器下,MATLAB自动用不同颜色将图形显示出来。MATLAB提供了一些图形选项如下表所示:表 MATLAB绘图命令的各项选择选项意义选项意义-:rb*o实线点线红色蓝色用星号绘制各个数据点用圆圈绘制各个数据点-.gy.x虚线点划线绿色黄色用点号绘制各个数据点用叉号绘制各个数据点调用格式为plot(x轴变量1,y轴变量1,选项1,x轴变量2,y轴变量2,选项2,)t=0:.1:2*pi;y1=sin(t);y2=cos(t);y3=sin(t).*cos(t);plot(t,y1,-,t,y2,:,t,y3,x)grid,xlab
19、el(This is my X axis),ylabel(my Y axis),title(my own plot)ginput()函数允许用户用鼠标来点选屏幕点,其格式为x,y,button=ginput(n)n为选择点的数目,返回的向量x,y存储点中的n个点的坐标,button为n维向量其分量为 鼠标键的标号,如buttoni=1,则说明第次按下的是鼠标左键,2或3分别对应中键和右键。其它低级命令如line()和text()函数类似C语言函数的调用。格式为text(x1,y1,chStr,选项)line(x,y)或line(x,y,z)分别表示二维或三维上由向量x,y(,z)定义的折线。解
20、读下面程序:clgaxis(0,10,0,5)hold on; x=;y=;for i=1:10x1,y1,button=ginput(1);if(button=1) break;endchStr= (, num2str(x1), ,num2str(y1) ,); text(x1,y1,chStr);plot(x1,y1,o)x=x,x1; y=y,y1;endline(x,y); hold offhold 命令用来保护原来图形不被删除。MATLAB下特殊坐标:MATLAB还允许绘制极坐标曲线、对数坐标曲线和直方图等。极坐标曲线绘制函数:polar(theta,rho,选项)其中theta,
21、rho分别为角度向量和幅值向量,选项内容和plot()函数基本一致。直方图绘制函数bar():bar(x,y,选项) 或xx,yy = bar(x,y)前一种调用将直接由给定的(x,y)向量绘制出直方图;后一种只进行数据变换供plot(xx,yy)函数使用来绘制直方图。例如t1 =0:0.2:2*pi; y1=sin(t1);t2 =0:0.5:2*pi; y2=sin(t2);bar(t1,y1); axis(0,2*pi,-1,1); hold ont3,y3= bar(t2,y2); plot(t3,y3); hold off对数坐标曲线绘制函数:semilogx(x,y,选项),sem
22、ilogy(x,y,选项),loglog(x,y,选项)分别对横坐标、纵坐标和纵横坐标进行对数变换。MATLAB允许将一个窗口分隔多个部分来绘制多个图形,这可通过函数subplot(n,m,k)来设置,n,m表示窗口分隔的行列数,k表示绘图部分代号。例theta= 0:0.1:6*pi; r= cos(theta/3)+1/9;subplot(2,2,1); polar(theta, r);subplot(2,2,2); plot(theta,r);subplot(2,2,3); semilogx(theta,r); gridsubplot(2,2,1); semilogy(theta,r);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统分析 控制 14
限制150内