ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:121.95KB ,
资源ID:26166635      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26166635.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(系统分析与控制.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

系统分析与控制.docx

1、系统分析与控制系统分析与控制实验指导书石油大学机电教研室二年四月第三篇 MATLAB语言应用一、概述MATLAB是以复数矩阵作为基本编程单元的一种程序设计语言,它提供了矩阵的运算与操作。并有较强的绘图功能,已成为国际上最流行的控制系统CAD的软件工具。不仅流行于控制界,在生物医学语言图像处理,分析,计算机技术等各行各业也有广泛应用。MATLAB是一个功能极强的高度集成化程序设计语言。它具备一般程序设计语言的基本语句结构。但功能更强,这是C或FORTRAN语言无法比拟的。由于MATLAB提供了强大的矩阵处理和绘图功能,控制界学者将自己擅长的CSCAD方法用MATLAB加以实现,出现了大量的MAT

2、LAB配套工具箱。如控制界流行的控制系统工具箱(control systems toolbox),系统辨识工具箱(system identification toolbox),鲁棒控制工具箱(robust control toolbox),多变量频域设计工具箱(multivariable frequency design toolbox),最优化工具箱(optimization toolbox),信号处理工具箱(signal processing toolbox)以及仿真环境SIMULINK。这使得MATLAB风靡国际控制界。值得一提的是,1990年MathWorks软件公司为MATLAB提供

3、了新的控制系统模型图形输入与仿真工具,原名为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语言类似,MATLAB是区分大小

5、写的(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 2 3

7、,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表示圆周率inf 表示无穷大,MATLAB允许最大数值为1.797693110308, 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= inf 202.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矩阵为方阵。 A2 A0.1

10、A=1 2 3;4 5 6;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

11、不给出,认为步距为1,A(: , j)表示A矩阵第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 循环语句组end while (条件式) 循环语句组end

12、MATLAB的多项式函数: 多项式求值polyval(p,x0); 多项式求导polyder(p);求解多项式方程的根roots(p)。其中输入向量p是多项式系数降幂排列构成的向量。MATLAB提供了丰富的编程语句结构和实用函数,MATLAB本身编写出来的具有特殊目的程序(或M函数),其文件后缀名均为.M,这些文件都是由纯ASCII字符构成的,MATLAB下的M文件可以直接执行,这时只需在命令提示符下键入该文件名即可,MATLAB下的大多数应用程序都是由M函数形式给出, 如求取矩阵特征多项式的函数poly()和求取伴随矩阵的函数compan()等,除了M函数外,MATLAB还提供了大量底层的内

13、部函数,如求取特征值的函数eig(),奇异值分解的函数svd()等,这类文件是不可读的。MATLAB允许用户调用可执行文件.exe,调用方式为在提示符下键入惊叹号!,后面直接跟可执行文件的文件名或DOS命令即可,如可由!chkdsk命令来直接大于DOS 下的chkdsk.exe文件。其它DOS命令也一样直接调用。MATLAB已把一些常用的DOS命令做成相应的MATLAB命令,如DIR命令。在规定的格式下,MATLAB也支持用户用C语言或FORTRAN语言编写的程序。MATLAB工作空间及变量管理:MATLAB以复数矩阵为基本编程单元,用户可以直接使用一个矩阵,不必显式指明矩阵的维数。一个矩阵维

14、数可用size()函数来测取,调用格式为 n,m=size(A) 如等号左边只返回一个参数,这返回的参数是一个12的行向量,两个元素分别为矩阵A的行数和列数。同样的n=length(A)返回A向量的元素个数或A矩阵行列数中的最大值,等效于max(size(A)。如用户查看目前工作空间的变量名,可用who命令来完成。 who了解这些变量的具体细节,则可用whos命令查看 whos分别列出变量名(Name),矩阵大小(Size),元素个数(Element),字节数(Bytes),表现密度(Density: 完整FULL或稀疏度),有无复数(Complex)等,用户可用clear命令删除一些不再使用

15、的变量, clear a c 将删除工作空间中的a和c变量。a和c之间不能加逗号,否则将被解释成删除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(

16、enter matrix A =);表示首先给出提示后,等待用户输入A矩阵,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还提供了低级文

17、件打开和处理命令,如fopen(), fclose(), sprintf(),这同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

18、(t);plot(t,y) 将绘制出正弦曲线。t=0:.1:2*pi;y=sin(t);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(

19、t).*cos(t);plot(t,y1,-,t,y2,:,t,y3,x)grid,xlabel(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,选项)

20、line(x,y)或line(x,y,z)分别表示二维或三维上由向量x,y(,z)定义的折线。解读下面程序: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还允许绘制极坐标曲线、对数

21、坐标曲线和直方图等。极坐标曲线绘制函数: polar(theta,rho,选项) 其中theta, 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);

22、plot(t3,y3); hold off对数坐标曲线绘制函数: semilogx(x,y,选项),semilogy(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); sem

23、ilogx(theta,r); gridsubplot(2,2,1); semilogy(theta,r); gridMATLAB还提供了实用函数logspace()按对数等间距地分布来产生一个向量,其调用格式 x=logspace(x1,x2,n) n表示向量点个数,默认值为50。其它绘图及图形属性函数参见附录。三维曲线绘制: plot3(x,y,z,选项) 可绘制三维曲线,如 t=o:pi/50:10pi;x = sin(t); y=cos(t); z=t;plot3(x,y,z,g-)mesh(x,y,z,c) 可绘制三维曲面,c为颜色矩阵表示不同高度下的颜色范围,约定c=z,即颜色正比

24、于图形的高度。例:选择一定区域,绘制函数 的三维曲面图。 x,y=meshgrid(-3:1/8:3);z= 3*(1-x).2.*exp(-(x.2)-(y+1).2)-10*(x/5-x.3-y.5).*exp(-x.2-y.2)-1/3*exp(-(x+1).2-y.2); mesh(x,y,z) axis(min(min(x), max(max(x),min(min(y), max(max(y),min(min(z),max(max(z)其它还有表面函数surf(),surfc(),surf1(),等高线绘制函数contour(),调用方法同前。三、数值线性代数方法及MATLAB功能设

25、多项式 首一化处理的新多项式 其伴随矩阵(companion matrix) 函数调用:Bcompan(p) 生成伴随矩阵,其中p为一个多项式向量。设一序列C,各个元素满足c1,c2,cn,Vandermonde 矩阵构成为: 函数调用格式为 V=vander(c) c为一向量。矩阵的行列式|A|:函数调用格式 Ddet(A) D为一标量,A为方阵。矩阵的秩:函数调用格式 k=rank(A,tol) tol为误差限,默认eps,即k=rank(A)。矩阵特征多项式: 函数调用格式 Ppoly(A) 返回向量P为 降幂排列多项式系数。矩阵特征根(特征方程的解) Vroots(P) P为特征多项式

26、系数向量。矩阵特征值: 若对矩阵A存在非零向量X,且有一标量满足:Axx则分别称x,为矩阵A的特征向量和特征值 函数调用格式 V, D=eig(A) D为特征值构成的对角矩阵,V为特征向量矩阵。函数调用z=eig(A) 只返回特征值矩阵求逆: 函数调用格式Binv(A) 线性方程Ax=B的解可以由x=ina(A)*B求出,也可以简单由x=A/B求出。3.1 矩阵的非线性运算MATLAB提供了两类函数,其中一类是对矩阵的各个元素进行运算的,第二类是对整个矩阵进行运算的;第一类函数调用格式为:B函数名(A) 如Bsin(A),其它如下表表 面向矩阵元素的非线性函数表函数名意义函数名意义abs()求

27、模(绝对值)asin(),acos()反正,余弦函数sqrt()求平方根log(),log10()自然,常用对数exp()指数函数real(),imag(),conj()求实虚部及共轭sin(),cos()正,余弦函数round(),floor(),ceil()取整,尾函数MATLAB还允许调用fplot()函数来直接绘制出基本函数曲线图形,函数调用格式为: fplot(函数名,绘图区间,样本点数 N) 函数名为上表给出的任意名称,绘图区间为 12的向量,元素是自变量的最小值与最大值,样本点数可省略,约定N25。如fplot(sin, 0,2*pi); 将绘制出一个周期内的正弦曲线。第二类面向

28、矩阵的非线性运算函数MATLAB 提供了求取矩阵指数eA的4个函数:expm(), expm1(),expm2(), expm3(), 分别采用不同算法实现。其中常用的函数还有logm()(矩阵求对数) sqrtm()(矩阵求平方根) funm()(矩阵求任意函数),funm()调用方法为: funm(矩阵名,函数名) 如求矩阵A的正弦矩阵命令为 Bfunm(A,sin)。矩阵函数运算是基于矩阵特征值和特征向量而完成的,有时会出现错误。这时矩阵的非线性函数运算可以通过幂级数的方法简单求出。数据分析处理介绍一组数据的最大和最小值可分别采用下面函数求出xM,i=max(x); 或xm,i=min(

29、x);其中xM, xm分别为向量x的最大值和最小值,i为所在的位置,这两个函数也可返回一个参数,而不返回i。如x不是向量而是矩阵则返回矩阵列向量的最小值和最大值构成的行向量。MATLAB还提供了对数据大小进行排序的函数sort(),调用后向量元素值从小到大进行排列。其它如mean()求向量平均值,std()求向量标准方差,median()求向量的中间值,等等。函数的定积分即的计算函数调用格式: y=quad(函数名, a, b, tol) 函数quad8()调用方法一样,但算法不同。其中a, b为定积分上下限,tol为变步长积分用的误差限。后者的精度和效率高些。非线性方程求解及最优化由前面的介绍可以看出,线性代数方程和多项式方程均可以在MATLAB下通过一个函数的调用而直接求出,并且求出的结果可以保证很高的精度。非线性方程组的求解方法比较复杂,在MATLAB中给出了一个函数fzero(),可以用来求解含有一元方程的解。在MATLAB的早期版本中还提供了求解多元方程的求解函数fsolve(),该函数的基本调用格式为 x=fsolve(函数名,初值);其中x为返回的解,函数名是由引号括起来的,在该函数中对非线性方程组有一个一般的描述,而初值为求根过程的起始点。但在MATLAB40中没有提供此函数,如果需要也可以将早期版本的fsoleve.m文件及其组成部分的ne*.m文件复制到

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1