基于MATLAB的控制系统分析精品资料.doc

上传人:封****n 文档编号:96697488 上传时间:2024-03-10 格式:DOC 页数:20 大小:119KB
返回 下载 相关 举报
基于MATLAB的控制系统分析精品资料.doc_第1页
第1页 / 共20页
基于MATLAB的控制系统分析精品资料.doc_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《基于MATLAB的控制系统分析精品资料.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的控制系统分析精品资料.doc(20页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、基于MATLAB的控制系统分析摘要:运用MATLAB 软件处理和仿真,分析所建立的控制系统模型的可行性。利用MATLAB平台分析系统传递函数的稳定性,利用MATLAB软件得出系统的单位阶跃响应和脉冲响应,分析说明MATLAB在自动控制系统方面的应用。关键词:控制系统 MATLAB 稳定性 Simulink0引言自动控制技术已经广泛应用于工业、农业、交通运输业、航空及航天业等众多产业部门,极大地提高了社会劳动生产率,改善了人们的劳动条件,丰富与提高了人们的生活水平。在当今的社会生活中,自动化装置无所不在,为人类文明进步做出了重要贡献。随着科学技术的发展,控制系统变得越来越复杂,控制理论和系统的分

2、析如果仅靠人工计算已经远远不能满足学习和研究的要求了。MATLAB是高性能的数值计算和可视化软件,他集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境。MATLAB的出现给控制系统的分析提供了极大的方便。MATLAB(Matix Laboratory,即“矩阵实验室”)是美国MathWorks公司开发的用于概念设计、算法开发、建模仿真、实时实现的理想的集成环境。从1984年MATLAB诞生到现在,它已经集成了许多工具箱,例如控制系统工具箱(Control System Toolbox)、Simulink工具箱等。为此,MATLAB软件在控制工程领域已获得了广泛的

3、应用,使得MATLAB成为控制系统仿真分析的必要工具1系统的稳定性分析稳定是控制系统的重要性能,也是系统能够正常运行的首要条件。在分析控制系统时,首先遇到的问题就是系统的稳定性。对线性系统来说,如果一个系统的所有几点都位于左半s平面,则该系统是稳定的。对于离散系统来说,如果一个系统的全部极点都在单位圆内,则该系统可以被认为是稳定的。由此可见,线性系统的稳定性完全取决于系统的极点在根平面上的位置。判断一个线性系统稳定性的一种最有效的方法是直接求出系统所用的极点,然后根据极点的分布情况来确定系统的稳定性。下面举一个具体的例子进行说明:【例一】 已知闭环系统的传递函数为 G(s)=判断系统的稳定性,

4、并给出不稳定极点可以采用下面的MATLAB程序%ex1.mnum=3 2 1 4 2;den=3 5 1 2 2 1;z,p=tf2zp(num,den);ii=find(real(p)0);n1=length(ii);if(n10) disp(The Unstable Poles are:); disp(p(ii);else disp(System is Stable);end执行结果显示:The Unstable Poles are: 0.4103+0.6801i 0.4103-0.6801i 在增加一下两条语句,则可画出如图所示的零极点图pzmap(num,den);title(Zero

5、-Pole Map)这是一个高阶系统,如果用人工计算的话就是十分麻烦的了,而且容易出现很多错误,还会影响控制系统的开发时间。而运用MATLAB软件就可以用几句简单易懂的程序语句就可以得到简单直观的系统稳定性的结果,这无疑是给控制系统的分析与研究带来了极大地方便,这样正是MATLAB软件在控制系统的分析领域应用得越来越广泛的原因之一。除了上述的利用极点判断系统的稳定性,我们还可以运用MATLAB的其它指令语句,利用特征值判断系统的稳定性;在高阶系统或者特征多项式中,当某些系数不是数值时,利用求闭环极点或特征值的方法来判断系统的稳定性是比较困难的。在这种情况下利用李雅普诺夫第二法来判断系统的稳定性

6、比较有效。尤其在系统含有非线性环节时更是如此。运用MATLAB软件进行求解则省去了复杂的运算,可以直接地得到结果。2运用MATLAB软件分析控制系统 对于一个控制系统而言仅仅关注它的稳定性是不够的,我们还要对自动控制系统做全面的分析以满足生产实际的要求,例如系统的动态性能、稳态误差等等。在控制工程中,几乎所用的控制系统都是高阶系统,即用高阶微分方程描述的系统。对于不能用一、二阶系统近似的高阶系统来说,其动态性能指标的确定是比较复杂的,为了减少计算量和工作强度,工程上经常直接应用MATLAB软件进行高阶系统的分析。【例二】 假设某一功能下系统的数学模型的闭环传递函数为:(s)=由于(s)=,其开

7、环函数为G(s)=(1) 系统的单位阶跃响应和脉冲响应在运用MATLAB软件分析系统的单位脉冲响应和单位阶跃响应的时候,我们可以调用MATLAB软件的impulse和step指令,其指令格式为:Y=impulse(sys,t)当不带输出变量y时,impulse命令可以直接绘制脉冲响应曲线;t用于设定仿真时间,可省略。Y=step(sys,t)当不带出输出变量y时,step命令可以直接绘制出阶跃响应曲线;t用于设定仿真时间,可以省略。下面运用上面介绍的两条指令语句对上述系统进行仿真MATLAB 程序为:clear ;close all ;num = 3 ;den = 1 6 11 6 ;subp

8、lot (2 ,1 ,1) ,step (num ,den) ;subplot (2 ,1 ,2) ,impulse (num ,den) ;系统的单位阶跃响应和脉冲响应如图所示: 单位脉冲响应 单位阶跃响应(2) 系统的稳定性分析 系统的稳定性分析有多种方法,这里在介绍一种运用MATLAB软件绘制系统的Bode图和Nyquist图判断系统的稳定性的方法。调用MATLAB的程序为:clear ;close all ;num = 3 ;den = 1 6 11 6 ;figure (1) ,bode (num ,den) ;margin (num ,den) ;figure (2) ,nyqui

9、st (num ,den) ;该程序可以的到系统的Bode图和Nyquist图,如下图所示 系统的Bode图 系统的Nyquist图由系统的Bode 图和Nyquist 图可以判断,该系统是稳定的。(3) 运用Simulink 进行系统仿真 Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。它支持连续、离散及两者混合的线性和非线性系统,同时它也支持具有不同部分拥有不同采样率的多种采样速率的系统仿真。Simulink为用户提供了一个图形化的用户界面,对于用方框图表示的系统,通过图形界面,利用鼠标点击和拖拉方式,建立系统模型就像用铅笔在在纸上绘制系统的方框图一样简单,它与用微分方程

10、和差分方程建模的传统仿真软件包相比,具有更直观、更方便、更灵活的优点,它不但实现了可视化的动态仿真,也实现了与MATLAB、C或FORTRAN语言,甚至和硬件之间的数据传送,大大的扩展了它的功能。在MATLAB的主界面下点击Simulink的快捷图标,打开系统模型库,在建立的M-file文中直接加入所需要的模块,该系统的系统仿真模型如图所示。(注:其中den(s)=)通过上述系统的模拟仿真,我们得到了如下的系统阶跃响应的仿真图3结论通过本文的论述和实例分析可见, 利用MATLAB 分析控制系统稳定性具有编程简单、操作方便、处理速度快, 分析结果准确可靠等优点。由此可见,MATLAB 为工程技术

11、人员分析、设计较优的控制系统提供了强有力的工具。 4学习心得在刚开始学习MATLAB这门课程的时候并没有得到我的重视,因为它只是一个工具性的软件,学习好自己的专业课程才是最重要的。直到MATLAB和自动控制原理两门课程都进行到重要的部分时候,我发现MATLAB现在就可以应用到我们的专业课自动控制原理上,随着学习的深入,控制系统的分析也变得越来越复杂,用传统方法的计算,时间周期长而且准确率不高。但是在学习完MATLAB软件以后发现,其实我们可以运用现在学习的MATLAB的知识可以分方便的解决自动控制原理方面的问题。MATLAB的软件编程语言非常简单易懂,更重要的是利用MATLAB软件的Simul

12、ink软件包可以非常方便的得到各种自动控制系统的响应图像,要比我们在实验室的到相应的图像要方便简单的多。在更深入的学习了MATLAB软件的使用以后,对它的强大功能有了更加深刻的认识,我相信在今后的学习和工作当中会有更多的地方运用到这一款软件,给我们的学习和工作带来更多的方便与快捷。参考文献1、 胡寿松 自动控制原理 第五版 北京 科学出版社 20072、 李国勇 谢克明 杨丽娟 计算机仿真与CAD基于MATLAB的控制系统 第二版 北京 电子工业出版社 20073、薛定宇,陈阳泉. 基于MATLAB/ Simulink 的系统仿真技术与应用 . 北京 清华大学出版社,2002.附录资料:MAT

13、LAB Cell函数使用技巧谈谈MATLAB中cell函数如果p为一个数,那么h(1)=p,是没有问题的。如果p为一个向量,那么h(1,:)=p是没有问题的。如果p是一个矩阵的话,上面的两种赋值方法都是会有错误的。那么要如何处理呢?这时就用到了cell数据类型了。cell的每个单元都可以存储任何数据,比如传递函数等。当然,存储矩阵更是没有问题的了。但是用cell数据类型之前,要先初始化。a=cell(n,m)那么就把a初始化为一个n行m列的空cell类型数据。如何赋值呢?a1,1=rand(5)那么a的1行1列的单元中存储的就是一个随机的55的方阵了。那么要用第一个单元中的方阵中的某个值呢?可

14、以如下引用:a1,1(2,3)就可以了,引用cell单元时要用,再引用矩阵的某个数据就要用()了。cell单元中的每个单元都是独立的,可以分别存储不同大小的矩阵或不同类型的数据。下面举个例子:a=cell(2,2);%预分配a1,1=cellclass;a1,2=1 2 2;a2,1=a,b,c;a2,2=9 5 6;a1,1ans =cellclassa1,2ans = 1 2 2a2,:ans =abcans = 9 5 6 b=a1,1b =cellclass元胞数组:元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素

15、可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。(1)元胞数组的创建 a=matlab,20;ones(2,3),1:10a = matlab 20 2x3 double 1x10 double b=matlab,20;ones(2,3),1:10b = matlab 20 2x3 double 1x10 double c=10c = 10c(1,2)=2c = 10 2c(2,2)=5c = 10 2 5isequal(a,b)a

16、ns = 1whosName Size Bytes Class Attributesa 2x2 388 cell ans 1x1 1 logical b 2x2 388 cell c 2x2 208 cell 用cell函数创建元胞数组,创建的数组为空元胞。cell函数创建空元胞数组的主要目的是为数组预先分配连续的存储空间,节约内存占用,提高执行效率。 a=cell(1)a = b=cell(1,2)b = c=cell(3,3)c = d=cell(2,2,2)d(:,:,1) = d(:,:,2) = whosName Size Bytes Class Attributesa 1x1 4

17、cell ans 1x1 1 logical b 1x2 8 cell c 3x3 36 cell d 2x2x2 32 cell (2)元胞数组的数据获得从元胞数组中读取数据,可保存为一个标准的数组或一个新的单元数组,或取出数组进行计算。元胞数组中数据的访问,可通过元胞内容的下标进行,用元胞数组名加大括号。大括号中数值表示元胞的下标。如a1,2表示元胞数组中第一行第二列的元胞。 a=20,matlab;ones(2,3),1:3a = 20 matlab 2x3 double 1x3 doublestr=a(1,2)str = matlabclass(str)ans =cellstr=a1,

18、2str =matlabclass(str)ans =char()和有着本质的区别,大括号用于表示元胞的内容,小括号表示指定的元胞。a = 20 matlab 2x3 double 1x3 doublea2,1(2,2)ans = 0.9134a2,1(2,3)ans = 0.0975a1,2(2)ans =a使用元胞的下标,可将一个元胞数组的子集赋值给另一个变量,创建新的元胞数组。 a=1,2,3;4,5,6;7,8,9a = 1 2 3 4 5 6 7 8 9 b=a(2:3,2:3)b = 5 6 8 9 c=a(1:3,2:3)c = 2 3 5 6 8 9本例使用元胞下标的方式创建了

19、新的元胞数组b和c,通过结果看出b和c就是元胞数组a的一部分。(3)元胞数组的删除和重塑要删除单元数组中的行或列,可以用冒号表示单元数组中的行或列,然后对其赋一个空矩阵即可。a=20,matlab;ones(2,3),1:3a = 20 matlab 2x3 double 1x3 doublea(1,:)=a = 2x3 double 1x3 double a=20,matlab;ones(2,3),1:3;a1=a = matlab 2x3 double 1x3 doublea(1)=a = 2x3 double matlab 1x3 doublea(2)=a = 2x3 double 1x

20、3 doublea(1,2)=? A null assignment can have only one non-colon index.a(1)=a = 1x3 double元宝数组和其他数组一样,也可以通过reshape函数改变形状,改变后的元胞数组与原元胞数组的元素个数相同,不能通过改变形状来添加或删除元胞数组中的元素。 a=cell(4,4)a = size(a)ans = 4 4 b=reshape(a,2,8)b = size(b)ans = 2 8(5)元胞数组中的操作函数 cell:创建空的元胞数组cellfun:为元胞数组的每个元胞执行指定的函数celldisp:显示所有元胞

21、的内容cellplot:利用图形方式显示元胞数组 cell2mat:将元胞数组转变成为普通的矩阵 mat2cell:将数值矩阵转变成为元胞数组 num2cell:将数值数组转变成为元胞数组 deal:将输入参数赋值给输出 cell2struct:将元胞数组转变成为结构 struct2cell:将结构转变为元胞数组iscell:判断输入是否为元胞数组 a=20,matlab,3-7i;ones(2,3),1:3,0a = 20 matlab 3.0000 - 7.0000i 2x3 double 1x3 double 0 b=cellfun(isreal,a)b = 1 1 0 1 1 1 c=

22、cellfun(length,a)c = 1 6 1 3 3 1 d=cellfun(isclass,a,double)d = 1 0 1 1 1 1(函数的应用)cellfun函数的主要功能是对元胞数组的元素(元胞)分别指定不同的函数,不过,能够在cellfun函数中使用的函数ushuliang是有限的。能在cellfun中使用的函数:isempty:若元胞元素为空,则返回逻辑真islogical:若元胞元素为逻辑类型,则返回逻辑真isreal:若元胞元素为实数,则返回逻辑真 length:元胞元素的长度ndims:元胞元素的维数prodofsize:元胞元素包含的元素个数(7)元胞数组的嵌

23、套元胞数组的元胞中包含其他的元胞数,称为嵌套元胞数组,没有嵌套结构的元胞则称为页元胞。使用嵌套的大括号或cell函数,或直接用赋值表达式,都可以创建嵌套单元数组,另外还可以访问嵌套元胞数组的子数组、元胞或元胞的元素。 a=cell(1,2)a = a(1,2)=cell(2,2)a = 2x2 cella(1,1)=magic(3);a1,2(1,1)=1 2 3;4 5 6;7 8 9;a1,2(2,1)=2-i;4+7i;a1,2(2,2)=cell(1,2);a1,22,2(2)=5;cellplot(a)(8)元胞数组与数值数组间的转化应用循环,可以将元胞数组转化为数值数组。2010-

24、11-08 12:06:44zz: Matlab Cell功能最近完成模式分类的作业,需要大量使用matlab,期间发现了一个问题,是matlab代码的复用程度。在面向过程编程里,基本的复用单位是函数,程序的复杂度籍此下放到函数的接口上。设计好函数间的接口,基本上就成功了一半。在面向对象编程里,基本的复用单位是对象,对象使得数据具有了一定程度的自维护。而在matlab里,我很长时间都没有找到方向,因为我搞不清楚复用的单位是什么。matlab中,基本的单位是矩阵,针对矩阵系统有一大堆的函数供你调用。但是,想自己写程序还是有一定的麻烦的。for循环语句在matlab里似乎是一个禁忌,所有老师都敦敦

25、告诫,不要轻易使用for。而函数调用也是同样的低效,有兴趣的同学可以参见此文。那么我们应该基于什么模块进行复用呢?答案是Cell模式。 Cell是matlab的一个特色功能,将一段代码以%标记为cell以后,就可以重复执行了,相当于在命令行输入该代码块。以前,为了测试不同参数的结果,往往要用up arrow执行上一条指令。遇到需要多条指令的地方,就很容易出错。而算法又没有完善到可以封装成函数的地步,整天来回跑代码让人不堪其烦。通过cell模式,可以非常方便地在不同的代码块之间跳转,或重复执行一个代码块。对于我来说,matlab中的编程越来越趋向于bash编程,所用到的语言只是起到一个粘合剂的作用,负责把系统内置的高性能函数组合起来。这种对语句块的复用方式能够快速地调试出需要的功能,有点类似传统的goto,但是可以一直观察着执行的结果,事前无须编译,也不用考虑函数的接口问题。当算法稳定下来,就可以考虑用一个接口轻易地封装成函数了。同时也可以直接保存为mfile供以后使用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 期刊短文 > 互联网

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com