收藏 分销(赏)

现代控制理论实验指导书.doc

上传人:天**** 文档编号:2222483 上传时间:2024-05-23 格式:DOC 页数:29 大小:650.54KB
下载 相关 举报
现代控制理论实验指导书.doc_第1页
第1页 / 共29页
现代控制理论实验指导书.doc_第2页
第2页 / 共29页
现代控制理论实验指导书.doc_第3页
第3页 / 共29页
现代控制理论实验指导书.doc_第4页
第4页 / 共29页
现代控制理论实验指导书.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、现代控制理论实验指导书 作者: 日期:2 个人收集整理 勿做商业用途现代控制理论实 验 指 导 书安阳工学院电子信息与电气工程系自动化教研室目录第1章 MATLAB软件简介11.1 MATLAB软件在控制系统中的应用介绍11。2 MATLAB软件使用入门11.2。1 MATLAB软件的环境介绍11。2.2 MATLAB软件基本运算入门11.2。3 MATLAB软件简单二维图形绘制11.2.4 M文件11。2。5 MATLAB程序流程控制1第二章实验1实验一 控制系统的数学模型及转换1实验二 状态空间模型的线性变换及其标准形1实验三 求解系统方程1实验四 系统能控性、能观性的判别1实验五 系统稳

2、定性仿真实验1实验六 状态反馈和状态观测器的设计(设计性)1第1章 MATLAB软件简介1。1 MATLAB软件在控制系统中的应用介绍MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场.它是一种科学计算软件,专门以矩阵的形式处理数据.MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。1993年MathWorks公司从加拿大滑铁卢大学购得MAPLE软件的使用权,从而以MAPLE为“引擎”开发了符号数学工具箱(Symbolic Math Tool

3、box).MATLAB软件包括五大通用功能:数值计算功能(Nemeric);符号运算功能(Symbolic);数据可视化功能(Graphic);数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强.目前,Mathworks公司已推出30多个应用工具箱。MATLAB在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通

4、信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。MATLAB在控制系统中的应用主要包括符号运算和数值计算仿真分析。由于控制系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能能基本满足控制系统课程的需求。例如,解微分方程、傅里叶正反变换、拉普拉斯正反变换、z正反变换等。MATLAB在控制系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲激响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析、零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入理解控制系统的理论知识,并为将来使用MATLAB进行信

5、号处理领域的各种分析和实际应用打下基础。1.2 MATLAB软件使用入门1。2.1 MATLAB软件的环境介绍MATLAB 6.5的工作桌面由标题栏、菜单栏、工具栏、命令窗口(Command Window)、工作空间窗口(Workspace)、当前目录窗口(Current Directory)、历史命令窗口(Command History)及状态栏组成,从而为用户使用MATLAB提供了集成的交互式图形界面,如图1-1所示。MATLAB的命令窗口是接收用户输入命令及输出数据显示的窗口,几乎所有的MATLAB行为都是在命令窗口进行的。当启动MATLAB软件时,命令窗口就做好了接收指令和输入的准备,

6、并出现命令提示符()。在命令提示符后输入指令通常会创建一个或多图1-1 MATLAB的工作桌面个变量.变量可以是多种类型的,包括函数和字符串,但通常的变量只是数据。这些变量被放置在MATLAB的工作空间中,工作空间窗口提供了变量的一些重要信息,包括变量的名称、维数大小、占用内存大小、以及数据类型等信息.查看工作空间的另一种方法是使用whos命令。在命令提示符后输入whos命令,工作空间中的内容概要将作为输出显示在命令窗口中.有的命令可以用来清除不必要的数据,同时释放部分系统资源。clear命令可以用来清除工作空间的所有变量,如果要清除某一特定变量则需要在clear命令后加上该变量的名称.另外,

7、clc命令用来清除命令窗口的内容。如果希望将MATLAB所创建的变量及重要数据保留下来,则使用save命令,并在其后加上文件名,即可将整个工作空间保存为一个扩展名为。mat的文件。使用load命令,并在其后加上文件名,则可将MATLAB数据文件(.mat文件)中的数据加载到工作空间中。MATLAB历史命令窗口记录了每次输入的命令。在该窗口中可以对以前的历史命令进行查看、复制或者直接运行。对于初学者而言,需要掌握的最重要且最有用的命令应为help命令。MATLAB命令和函数有数千个,而且许多命令的功能非常强大,调用形式多样。要想了解一个命令或函数,只需在命令提示符后输入help,并加上该命令或函

8、数的名称,则MATLAB会给出其详细帮助信息.另外,MATLAB还精心设计了演示程序系统(Demo),内容包括MATLAB的内部主要函数和各个工具箱(Toolbox)的使用。初学者可以方便地通过这些演示程序及其给出的程序源代码进行直观的感受和学习。用户可以通过两种途径打开演示程序系统.一是在命令窗口中输入demo或demos命令并按Enter键;二是选择“help”“Demos菜单命令。1.2。2 MATLAB软件基本运算入门1。 MATLAB软件的数值计算(1)算术运算MATLAB可以像一个简单的计算器一样使用,不论是实数运算还是复数运算都能轻松完成。标量的加法、减法、除法和幂运算均可通过常

9、规符号“+、“-”、“*、“/、以及“”来完成。对于复数中的虚数单位,MATLAB采用预定义变量i或j表示,即i=j=.因此,一个复常量可用直角坐标形式来表示,例如,A=-3i4A= 3.0000 4.0000i将复常量3-i4赋予了变量A.一个复常量还可用极坐标的形式来表示,例如,B=2*exp(ipi/6)B= 1.7321 + 1.0000i其中,pi是MATLAB预定义变量,pi=。 复数的实部和虚部可以通过real和imag运算符来实现,而复数的模和辐角可以通过abs和angle运算符来实现。但应注意辐角的单位为弧度。例如,复数A的模和辐角、复数B的实部和虚部的计算分别为A_mag=

10、abs(A)A_mag=5A_rad=angle(A)A_rad= -2.2143B_real=real(B)B_real= 1.7321B_imag=imag(B)B_imag= 1。0000如果将弧度值用“度”来表示,则可进行转换,即A_deg=angle(A)*180/piA_deg= 126。8699复数A的模可表示为,因此,其共轭复数可通过conj命令来实现,例如,A_mag=sqrt(A*conj(A)A_mag= 5(2)向量运算向量是组成矩阵的基本元素之一,MATLAB具有关于向量运算的强大功能.一般地,向量被分为行向量和列向量。生成向量的方法有很多,我们主要介绍两种。直接输入

11、向量:即把向量中的每个元素列举出来。向量元素要用“ ”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。例如,A=1,3,5,21A= 1 3 5 21B=1;3;5;21B= 1 3 5 21利用冒号表达式生成向量:这种方法用于生成等步长或均匀等分的行向量,其表达式为x=x0:step:xn.其中,x0为初始值;step表示步长或增量;xn为结束值。如果step值缺省,则步长默认为1.例如,C=0:2:10C= 0 2 4 6 8 10D=0:10D= 0 1 2 3 4 5 6 7 8 9 10在连续时间信号和离散时间信号的表示过程中,我们经常要用到冒号表达式。例如,对于

12、范围内的连续信号,可用冒号表达式“t=0:0。001:1;”来近似表达该区间,此时,向量t表示该区间以0.001为间隔的1001个点。如果一个向量或一个标量与一个数进行运算,即“+”、“-”、“*”、“/、以及“”运算,则运算结果是将该向量的每一个元素与这个数逐一进行相应的运算所得到的新的向量.例如,C=0:2:10;E=C/4E= 0 0。5000 1.0000 1.5000 2。0000 2.5000其中,第一行语句结束的分号是为了不显示C的结果;第二句没有分号则显示出E的结果。一个向量中元素的个数可以通过命令“length”获得,例如,t=0:0.001:1;L=length(t)L=

13、1001(3)矩阵运算MATLAB又称矩阵实验室,因此,MATLAB中矩阵的表示十分方便。例如,输入矩阵在MATLAB命令窗口中可输入下列命令得到,即a=11 12 13;21 22 23;31 32 33a= 11 12 13 21 22 23 31 32 33其中,命令中整个矩阵用括号“ ”括起来;矩阵每一行的各个元素必须用逗号“,”或空格分开;矩阵的不同行之间必须用分号“;”或者按Enter键分开。a+b 矩阵加法ab 矩阵减法在矩阵的加减运算中,矩阵维数相同才能实行加减运算。矩阵的加法或减法运算是将矩阵的对应元素分别进行加法或减法运算.在矩阵的乘法运算中,要求两矩阵必须维数相容,即第一

14、个矩阵的列数必须等于第二个矩阵的行数。例如,a=1 2 3;4 5 6 a= 1 2 3 4 5 6b=1 2; 3 4;5 6b= 1 2 3 4 5 6c=a*bc= 22 28 49 64 MATLAB中矩阵的点运算指维数相同的矩阵位置对应元素进行的算术运算,标量常数可以和矩阵进行任何点运算。常用的点运算包括“。”、“./”、“.”、“。”等.矩阵的加法和减法是在对应元素之间进行的,所以不存在点加法或点减法。 点乘运算,又称Hadamard乘积,是指两维数相同的矩阵或向量对应元素相乘,表示为C=A。*B。点除运算是指两维数相同的矩阵或向量中各元素独立的除运算,包括点右除和点左除。其中,点

15、右除表示为CA。/B,意思是A对应元素除以B对应元素;点左除表示为CA.B,意思是B对应元素除以A对应元素。点幂运算指两维数相同的矩阵或向量各元素独立的幂运算,表达式为CA.B。常用的矩阵的基本函数运算还有det(a) 求矩阵a的行列式eig(a) 求矩阵a的特征值inv(a)或a(-1) 求矩阵a的逆矩阵rank(a) 求矩阵a的秩trace(a) 求矩阵a的迹(对角线元素之和)norm(a) 求矩阵a的范数【实例11】 已知t为一向量,用MATLAB命令计算在区间上对应的值.解:表达式中的运算都是点运算,MATLAB源程序为t=0:0.01:1;y=(sin(t)。exp(-2t)+5).

16、/(cos(t)+t.2+1);plot(t,y),xlabel(t),ylabel(y)这里,未将y的结果显示出来,而是用plot命令将结果绘出图形来,如图1-2所示。图1-2 实例1-1的结果2。 MATLAB软件的符号运算MATLAB符号运算工具箱提供的函数命令是专门研究符号运算功能的。符号运算是指符号之间的运算,其运算结果仍以标准的符号形式表达.符号运算是MATLAB的一个极其重要的组成部分,符号表示的解析式比数值解具有更好的通用性.在使用符号运算之前必须定义符号变量,并创建符号表达式.定义符号变量的语句格式为syms 变量名其中,各个变量名须用空格隔开。例如,定义x、y、z三个符号变

17、量的语句格式为syms x y z我们可以用whos命令来查看所定义的符号变量,即clearsyms x y zwhosName Size Bytes Class x 1x1 126 sym object y 1x1 126 sym object z 1x1 126 sym objectGrand total is 6 elements using 378 bytes可见,变量x、y、z必须通过符号对象定义,即sym object,才能参与符号运算。另一种定义符号变量的语句格式为sym(变量名)例如,x、y、z三个符号变量定义的语句格式为x=sym(x);y=sym(y);z=sym(z);s

18、ym语句还可以用来定义符号表达式,语句格式为sym(表达式)例如,定义表达式x+1为符号表达式对象,语句为sym(x+1);另一种创建符号表达式的方法是先定义符号变量,然后直接写出符号表达式。例如,在MATLAB中创建符号表达式,其MATLAB源程序为syms ty=(sin(t)。*exp(-2t)+5)。/(cos(t)+t.2+1)y=(sin(t)exp(-2t)+5)/(cos(t)+t2+1)例如,符号算术运算的MATLAB源程序为clearsyms a bf1=1/(a+1); f2=2a/(a+b); f3=(a+1)(b-1)* (a-b); f1+f2ans=1/(a+1)

19、+2a/(a+b)f1*f3ans= (b1)(ab)f1/f3ans=1/(a+1)2/(b1)/(ab)在符号运算中,可以用“simple”或者“simplify”函数来化简运算结果,例如,syms xf1=sin(x)2; f2=cos(x)2; y=f1+f2y=sin(x)2+cos(x)2y=simplify(y)y=11。2.3 MATLAB软件简单二维图形绘制MATLAB的plot命令是绘制二维曲线的基本函数,它为数据的可视化提供了方便的途径。例如,函数关于变量x的曲线绘制的语句格式为plot(x,y)其中,输出以向量x为横坐标,向量y为纵坐标,且按照向量x、y中元素的排列顺序

20、有序绘制图形。但向量x与y必须拥有相同的长度.绘制多幅图形的语句格式为plot(x1,y1,str1,x2,y2,str2,.。)其中,用str1制定的方式,输出以x1为横坐标、y1为纵坐标的图形。用str2制定的方式,输出以x2为横坐标、y2为纵坐标的图形。若省略str,则MATLAB自动为每条曲线选择颜色与线型。图形完成后,可以通过几个命令来调整显示结果.如grid on用来显示格线;axis(xmin,xmax,ymin,ymax)函数调整坐标轴的显示范围.其中,括号内的“,”可用空格代替;xlabel和ylabel命令可为横坐标和纵坐标加标注,标注的字符串必须用单引号引起来;title

21、命令可在图形顶部加注标题。【实例1-2】 用MATLAB命令绘制函数的波形图。解:MATLAB源程序为t=0:0。01:5;y=sin(5*pi*t)+1./(cos(pit)+2);plot(t,y)axis(0,5,-1,2。5)xlabel(t),ylabel(y),grid on程序运行结果如图13所示。图1-3 实例1-2的函数波形图用subplot命令可在一个图形窗口中按照规定的排列方式同时显示多个图形,方便图形的比较。其语句格式为subplot(m,n,p)或者subplot(mnp)其中,m和n表示在一个图形窗口中显示m行n列个图像,p表示第p个图像区域,即在第p个区域作图。例

22、如,比较正弦信号相位差的MATLAB源程序为t=0:0.01:3;y1=sin(2*pi*t);y2=sin(2*pi*t+pi/6);subplot(211),plot(t,y1)xlabel(t),ylabel(y1),title(y1=sin(2*pi*t))subplot(212),plot(t,y2)xlabel(t),ylabel(y2),title(y2=sin(2pi*t+pi/6))程序运行结果如图1-4所示。图1-4 正弦信号相位差比较除了plot命令外,MATLAB提供了ezplot命令绘制符号表达式的曲线,其语句格式为ezplot(y, a,b)其中,a,b参数表示符号

23、表达式的自变量取值范围,默认值为。【实例13】 利用MATLAB的ezplot命令绘出函数的波形图。解:MATLAB源程序为syms xy=-16x2+64*x+96;ezplot(y,0,5)xlabel(t),ylabel(y),grid on图1-5 实例1-3的函数波形图程序运行结果如图1-5所示。在绘图过程中,我们可利用“hold on命令来保持当前图形,继续在当前图形状态下绘制其他图形,即可在同一窗口下绘制多幅图形。“hold off”命令用来释放当前图形窗口,绘制下一幅图形作为当前图形。1。2.4 M文件MATLAB是解释型语言,也就是说在MATLAB命令行中输入的命令在当前MA

24、TLAB进程中被解释运行,无需编译和链接等.MATLAB文件分为两类:M脚本文件(MScript)和M函数(Mfunction),它们均为由ASCII码构成的文件,该文件可直接在文本编辑器中编写,称为M文件,保存的文件扩展名是.m。M脚本文件包含一族由MATLAB语言所支持的语句,并保存为M文件.它类似于DOS下的批处理文件,不需要在其中输入参数,也不需要给出输出变量来接受处理结果.脚本仅是若干命令或函数的集合,用于执行特定的功能。其执行方式很简单,用户只需在MATLAB的提示符下键入该M文件的文件名,这样MATLAB就会自动执行该M文件中的各条语句,并将结果直接返回到MATLAB工作空间中。

25、脚本M文件实际上是一系列MATLAB命令的集合,它的作用与在MATLAB命令窗口输入的一系列命令等效。M函数文件不同于M脚本文件,是一种封装结构,通过外界提供输入量而得到函数文件的输出结果。函数是接受入口参数返回出口参数的M文件,程序在自己的工作空间中操作变量,与工作空间分开,无法访问。M函数文件和M脚本文件都是在编辑器中生成,通常以关键字function引导“函数声明行”,并罗列出函数与外界联系的全部“标称”输入输出宗量。它的一般形式为function output 1, output 2, = functionname(input1, input2,)%output 1, output 2

26、, = functionname(input1, input2,) FunctionnameSome comments that explain what the function does go here.MATLAB command 1;MATLAB command 2;MATLAB command 3;该函数的M文件名是functionname。m,在MATLAB命令窗口中可被其他M文件调用,例如, output1, output2 = functionname(input1, input2)注意,MATLAB忽略了“”后面的所有文字,因此,可以利用该符号写注释。以“;”结束一行可以停止

27、输出打印,在一行的最后输入“”可以续行,以便在下一行继续输入指令。M函数格式是MATLAB程序设计的主流,在一般情况下,不建议使用M脚本文件格式编程。1。2.5 MATLAB程序流程控制MATLAB与其他高级编程语言一样,是一种结构化的编程语言.MATLAB程序流程控制结构一般可分为顺序结构、循环结构、以及条件分支结构。MATLAB中实现顺序结构的方法非常简单,只需将程序语句按顺序排列即可。在MATLAB中,循环结构可以由for语句循环结构和while语句循环结构两种方式来实现.条件分支结构可以由if语句分支结构和switch语句分支结构两种方式来实现.下面我们主要介绍这几种程序流程控制。1.

28、 for循环结构for循环结构用于在一定条件下多次循环执行处理某段指令,其语法格式为for 循环变量初值:增量:终值循环体end循环变量一般被定义为一个向量,这样循环变量从初值开始,循环体中的语句每被执行一次,变量值就增加一个增量,直到变量等于终值为止.增量可以根据需要设定,默认时为1.end代表循环体的结束部分。例如,用for循环结构求1+2+3+100的和,其MATLAB源程序为sum=0;for i=1:100sum=sum+i;endsumsum= 50502. while循环结构while循环结构也用于循环执行处理某段指令,但是与for循环结构不同的是在执行循环体之前先要判断循环执行

29、的条件是否成立,即逻辑表达式为“真”还是“假,如果条件成立,则执行;如果条件不成立,则终止循环。其语法格式为while 逻辑表达式循环体end例如,用while循环结构求1+2+3+100的和,其MATLAB源程序为sum=0;i=0;while is=input(输入score= ); %屏幕提示输入x=,由键盘输入值赋给xif s=90 rank=Aelseif s=80 rank=Belseif s=70 rank=Celseif s=60 rank=Delse rank=Eend4。 switch分支结构switch分支结构是根据表达式的取值结果不同来选择执行的程序模块,其语法格式为s

30、witch 表达式case 常量1程序模块1case 常量2 程序模块2otherwise程序模块nend其中,switch后面的表达式可以是任何类型,如数字、字符串等。当表达式的值与case后面的常量相等时,就执行对应的程序模块;如果所有常量都与表达式的值不等时,则执行otherwise后面的程序模块.例如,用switch分支结构也可实现百分制考试分数分级,其MATLAB源程序为s=input(输入score= ); switch fix(s/10) %利用fix函数舍去小数部分取最近整数 case 10,9 rank=A case 8 rank=B case 7 rank=C case 6

31、 rank=D otherwise rank=Eend除了上述介绍的几种程序流程控制结构外,MATLAB为实现交互控制程序流程还提供了continue、break、pause、input、error、disp等命令.读者可通过doc或者help命令查看它们的具体使用。第二章实验实验一 控制系统的数学模型及转换一 实验目的(1) 熟悉线性系统的数学模型及模型转换。(2) 了解MATLAB中相应的函数.二 实验原理(1) 由传递函数建立状态空间系统的传递函数为 (i) 只含单实极点时的情况.设可分解为: 则 若令状态变量为 其向量-矩阵形式为,(ii) 含重实极点时的情况。例如可分解为 则 若令状

32、态变量为 (2) 状态方程转化为传递函数设系统的模型如式(11)示。 (11)其中A为nn维系数矩阵、B为nm维输入矩阵 C为pn维输出矩阵,D为传递阵,一般情况下为0,只有n和m维数相同时,D=1。系统的传递函数阵和状态空间表达式之间的关系如式(12)示。 (12)式(12)中,表示传递函数阵的分子阵,其维数是pm;表示传递函数阵的按s降幂排列的分母。三 实验内容(1)据所给系统的传递函数或(A、B、C、D阵),依据系统的传递函数阵和状态空间表达式之间的关系如式(12),采用MATLAB的file。m编程。注意:ss2tf和tf2ss是互为逆转换的指令;(2)在MATLAB界面下调试程序,并

33、检查是否运行正确。(3)例1.1 已知SISO系统的状态空间表达式为(13),求系统的传递函数. (13)程序:%首先给A、B、C阵赋值;A=0 1 0;0 0 1;4 3 -2;B=1;3;6;C=1 0 0;D=0; num,den=ss2tf(A,B,C,D,1) 或num,den=ss2tf(A,B,C,D) %状态空间表达式转换成传递函数阵的格式为num,den=ss2tf(a,b,c,d,u)%对多输入系统,必须具体化u,单输入有无u都一样程序运行结果:num = 0 1.0000 5.0000 3。0000den = 1。0000 2。0000 3。0000 4。0000从程序运

34、行结果得到:系统的传递函数为: (14)(4)例1.2 从系统的传递函数(14)式求状态空间表达式.程序:num =0 1 5 3; 在给num赋值时,在系数前补0,必须使num和den赋值的个数相同;den =1 2 3 4;A,B,C,D=tf2ss(num,den)程序运行结果:A = B = -2 -3 -4 1 1 0 0 0 0 1 0 0C = D =1 5 3 0四 实验报告要求(1) 在运行以上例程序的基础上,应用MATLAB对(15)系统编程,求系统的A、B、C、D阵,并运行得出结果. (15)提示:num =0 0 1 2;0 1 5 3;(2)用两种方法验证上述结果是否

35、正确.提示:num,den=ss2tf(a,b,c,d,u)五 讨论例1。2程序运行结果不等于式(13)中的A、B、C阵,是结果错了吗?为什么?实验二 状态空间模型的线性变换及其标准形一 实验目的(1) 掌握线性系统的对角线标准形、约当标准形的表示及相应变换阵的求解。(2) 了解MATLAB中相应的函数。二 实验原理(1) 对角规范型设A阵为任意形式的方阵,且有n个互异实数特征值,则可由非奇异线性变换化为对角阵,P阵由A阵的实数特征向量组成:特征向量满足,程序实现:Q,D=eig(A) Q为变换阵,D为对角阵(2) 约当标准形设A阵具有m重实特征值,其余为个互异实特征值,但在求解时只有一个独立实特征向量,则只能使A化为约当阵J,

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 应用文书 > 技术指导

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服