实验一指导书MATLAB在控制系统模型建立与仿真中的应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验一MATLAB在控制系统模型建立与仿真中的应用一、MATLAB基本操作与使用1.实验目的1)熟悉MATLAB工作环境平台及其各个窗口,掌握MATLAB语言的基本规定,MATLAB图形绘制功能、M文件程序设计。2)学习使用MATLAB控制系统工具箱中线性控制系统传递函数模型的相关函数。2.实验仪器PC计算机一台,MATLAB软件1套3.实验内容1)MATLAB工作环境平台图1在英文Windows平台上的MATLAB6.5MATLAB工作平台①命令窗口(CommandWindow)命令窗口是对MATLAB进行操作的主要载体,默认的情况下,启动MATLAB时就会打开命令窗口,显示形式如图1所示。一般来说,MATLAB的所有函数和命令都可以在命令窗口中执行。掌握MALAB命令行操作是走入MATLAB世界的第一步。命令行操作实现了对程序设计而言简单而又重要的人机交互,通过对命令行操作,避免了编程序的麻烦,体现了MATLAB所特有的灵活性。在运行MATLAB后,当命令窗口为活动窗口时,将出现一个光标,光标的左侧还出现提示符“”,表示MATLAB正在等待执行命令。注意:每个命令行键入完后,都必须按回车键!当需要处理相当繁琐的计算时,可能在一行之内无法写完表达式,可以换行表示,此时需要使用续行符“…”否则MATLAB将只计算一行的值,而不理会该行是否已输入完毕。使用续行符之后MATLAB会自动将前一行保留而不加以计算,并与下一行衔接,等待完整输入后再计算整个输入的结果。在MATLAB命令行操作中,有一些键盘按键可以提供特殊而方便的编辑操作。比如:“↑”可用于调出前一个命令行,“↓”可调出后一个命令行,避免了重新输入的麻烦。当然下面即将讲到的历史窗口也具有此功能。②历史窗口(CommandHistory)历史命令窗口是MATLAB6新增添的一个用户界面窗口,默认设置下历史命令窗口会保CommandWindow留自安装时起所有命令的历史记录,并标明使用时间,以方便使用者的查询。而且双击某一行命令,即在命令窗口中执行该命令。③当前目录窗口(CurrentDirectory)在当前目录窗口中可显示或改变当前目录,还可以显示当前目录下的文件,包括文件名、文件类型、最后修改时间以及该文件的说明信息等并提供搜索功能。④工作空间管理窗口(Workspace)工作空间管理窗口是MATLAB的重要组成部分。在工作空间管理窗口中将显示所有目前保存在内存中的MATLAB变量的变量名、数据结构、字节数以及类型,而不同的变量类型分别对应不同的变量名图标。2)MATLAB的基本规定(1)数值的表示MATLAB的数值采用十进制,可以带小数点或负号。以下表示都合法。0,-100,0.008,12.752,1.8e-6,8.2e52(2)变量命名规定①变量名、函数名:字母大小写表示不同的变量名。如A和a表示不同的变量名;sin是MATLAB定义的正弦函数,而Sin,SIN等都不是。②变量名的第一个字母必须是英文字母,不能是数字,最多可包含31个字符(英文、数字和下连字符)。如A21是合法的变量名,而3A21是不合法的变量名。③变量名中不得包含空格、标点,但可以有下连字符。如变量名A_b21是合法变量名,而A,21是不合法的。(3)基本运算符表1MATLAB表达式的基本运算符数学表达式MATLAB运算符MATLAB表达式加a+b+a+b减a-b-a-b乘a×b*a*b除a÷b/或\a/b或a\b幂ab^a^b点乘两矩阵元素相乘.*a.*b(4)MATLAB默认的预定义变量在MATLAB中有一些预定义变量(predefinedvariable)。每当MATLAB启动,这些变量就被产生。用户在定义变量时,尽量避开表2所列预定义变量名,以免产生混淆。表2MATLAB的预定义变量预定义变量含义预定义变量含义ans计算结果的缺省变量名NaN或nan未定式,如0/0eps机器零阈值nargin函数输入宗量数目flops浮点运算次数nargout函数输出宗量数目Inf或inf无穷大,如1/0realmax最大正实数i或j虚单元i=j=1realmin最小正实数pi圆周率π对《自动控制理论》书p409-410中简单数学运算的例子,请在MATLAB命令窗口中对这些运算进行验证。(5)MATLAB的矩阵运算(课本P410-411)矩阵的输入和矩阵的运算对课本p410-411中矩阵运算的例子,请在MATLAB命令窗口中对这些运算进行验证。3)MATLAB图形绘制在二维曲线绘制中,最基本的指令是plot()函数。如果用户将x和y两组数据分别在向量x和y中存储,且它们的长度相同,调用该函数的格式为:plot(x,y)这时将在一个图形窗口上绘出所需要的二维图形。在MATLAB命令窗口提示符“”下键入helpplot,可得到plot()函数的相关内容,如曲线颜色和线型的改变。任务一:在MATLAB命令窗口提示符“”下,完成下述任务:任务(1)绘制一个周期内的正弦曲线。先产生自变量t时间向量,由给出的自变量时间向量求取其正弦函数值向量,然后调用plot()函数绘制曲线。任务(2)在一个绘图窗口上同时绘制多条曲线。参考课本p411-412,写成命令,完成上述任务(1)和任务(2)。4)M文件程序设计对于简单问题,使用直接输入命令简单有效,但对于较复杂和多次重复的问题,直接输入命令比较麻烦,使用M文件则简便。MATLAB不仅用命令行方式工作,还可以像BASIC、FORTRAN、C等其他高级计算机语言一样进行控制流的程序设计(MATLAB语言的流程控制语句主要有for、while、if-else-end及switch-case等4种语句)。MATLAB控制流,即编制一种以.m为扩展名的MATLAB程序(简称M文件)。由于商用的MATLAB软件是用C语言编写而成。因此,M文件的语法与C语言十分相似。建立和运行M文件程序的过程如下:①打开M文件编辑窗口:在图1中选择File→New→M-file菜单项实现,在M文件编辑窗口键入M文件的各行命令代码,例如输入课本P412M文件部分的例子代码②保存文件:在图2中选择File→Save菜单项,保存文件。例如可键入exp1,上述命令行就保存为exp1.m。图2建立和运行M文件程序的过程③调试运行M文件程序:可在图中选择Debug→Run菜单项,全速运行M文件程序。也可用鼠标点击行号后短横线,给程序设置断点,选择Debug→Step,单步运行M文件程序,并根据工作空间管理窗口(Workspace)结果了解每条指令的功能。此外,在MATLAB命令窗口键入exp1(该M文件的名字,注意不写后缀)即可运行该M文件。任务二:按上面的过程来建立并保存一个M文件程序,并调试运行M文件程序。5)MATLAB控制系统工具箱中的线性系统传递函数模型的相关函数(1)tf()函数若要在MATLAB环境下得到传递函数的形式,可以调用tf()函数。该函数的调用格式为G=tf(num,den);其中num,den分别为系统传递函数的分子和分母多项式系数向量。返回的G为传递函数形式。但如果分子或分母多项式给出的不是完全的展开的形式,而是若干个因式的乘积,则事先需要将其变换为完全展开的形式,两个多项式的乘积在MATLAB下借用卷积求取函数conv()得出,其调用格式为p=conv(p1,p2)其中p1和p2为两个多项式,调用这个函数就能返回乘积多项式p。如果有3个多项式的乘积,就需要嵌套使用此函数,即p=conv(p1,conv(p2,p3))或p=conv(conv(p1,p2),p3)请注意在调用时括号的匹配。MATLAB还支持一种特殊的传递函数的输入格式,在这样的输入方式下,应该先用s=tf(’s’)定义传递函数算子,然后用数学表达式直接输入系统的传递函数。请自己通过下面两个例子来演示和掌握tf()和s=tf(’s’)算子这两种输入方式。例1设系统传递函数134223523423sssssssG输入方式一:num=[1,5,3,2];den=[1,2,4,3,1];%分子多项式和分母多项式G=tf(num,den);%这样就获得系统的数学模型G了。这些命令可在命令行输入也可编成一个M文件。在MATLB提示符“”下键入G,或省略最后命令中分号,则可显示该数学模型。输入方式二:s=tf(’s’);G=(s^3+5*s^2+3*s+2)/(s^4+2*s^3+4*s^2+3*s+1);任务三:设系统传递函数432534ssssG采用上面两种输入方式,输入其传递函数,并记录命令。例2设系统传递函数)1)(43()1()4.2(5222sssssG此题分子或分母多项式给出的不是完全展开的形式,而是若干个因式的乘积,采用tf()这一种输入法之前,应先用conv()函数获得分子和分母多项式给出的完全展开的形式num和den,即输入命令:num=conv([0,5],[1,2.4]);den=conv(conv(conv([1,1],[1,1]),[1,3,4]),[1,0,1]);G=tf(num,den)%语句没有分号结尾,故将显示系统传递函数Transferfunction:5s+12-------------------------------------------------s^6+5s^5+12s^4+16s^3+15s^2+11s+4这种情况用算子方法可以更直观地输入系统模型,输入命令为s=tf('s');G=5*(s+2.4)/((s+1)^2*(s^2+3*s+4)*(s^2+1));任务四:在MATLAB命令窗口中对例2的这两种输入方法进行验证。(2)tfdata()函数如果有了传递函数G,则提取控制系统的传递函数的分子多项式num和分母多项式den可以由tfdata()函数来实现。如输入命令:s=tf('s');G=5*(s+2.4)/((s+1)^2*(s^2+3*s+4)*(s^2+1))[num,den]=tfdata(G,'v')%其中'v'表示想获得num和den的数值任务五:在MATLAB命令窗口中对该例进行验证。(3)zpk()函数若要得到控制系统零极点传递函数,可以调用zpk()函数。该函数的调用格式为G=zpk(Z,P,K);其中K为系统的增益,Z,P分别为系统传递函数的零点和极点列向量。返回的G为传递函数形式。例3设系统传递函数)1)(2)(3)(4()8538.27305.2)(8538.27305.2)(539.1(ssssjsjssG输入下面的命令:Z=[-1.539;-2.7305+2.8538i;-2.7305-2.8538i];%注意使用列向量,另外注意符号P=[-1;-2;-3;-4];G=zpk(Z,P,1);在MATLB提示符“”下键入G,或省略最后命令中分号,则可显示该数学模型。G%下面是MATLB的显示结果Zero/pole/gain:(s+1.539)(s^2+5.461s+15.6)-----------------------------------------(s+1)(s+2)(s+3)(s+4)任务六:在MATLAB命令窗口中对该例进行验证。注意在MATLAB的零极点模型显示中,如果有复数零极点存在,则用二阶多项式来表示两个因子,而不直接展成复数的一阶因式。(4)tf2zp()函数、zp2tf()函数控制系统分子、分母多项式传递函数与控制系统零极点传递函数可以用tf2zp()、zp2tf()函数转换。tf2zp()可将分子、分母多项式的传递函数转换为零、极点增益形式。该函数的调用格式为[Z,P,K]=tf2zp(num,den);zp2tf()可将零、极点增益形式转换为分子、分母多项式的传递函数。该函数的调用格式为[num,den]=zp2tf(Z,P,K)任务七:应用tf2zp()函数求出例1和任务五中系统的零极点。4.实验报告内容1)写出

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功