统计计计算算算机机机辅辅辅助助助设设设计计计

上传人:艾力 文档编号:36572075 上传时间:2018-03-30 格式:PDF 页数:20 大小:754.66KB
返回 下载 相关 举报
统计计计算算算机机机辅辅辅助助助设设设计计计_第1页
第1页 / 共20页
统计计计算算算机机机辅辅辅助助助设设设计计计_第2页
第2页 / 共20页
统计计计算算算机机机辅辅辅助助助设设设计计计_第3页
第3页 / 共20页
统计计计算算算机机机辅辅辅助助助设设设计计计_第4页
第4页 / 共20页
统计计计算算算机机机辅辅辅助助助设设设计计计_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《统计计计算算算机机机辅辅辅助助助设设设计计计》由会员分享,可在线阅读,更多相关《统计计计算算算机机机辅辅辅助助助设设设计计计(20页珍藏版)》请在金锄头文库上搜索。

1、第第第1章章章控控控制制制系系系统统统计计计算算算机机机辅辅辅助助助设设设计计计概概概述述述自动化科学作为一门学科起源于20世纪初, 自动化科学与技术的基础理论来自于物理学等自然科学和数学、 系统科学、 社会科学等基础科学1, 在现代科学技术的发展中有着重要的地位, 起着重要的作用。 在第40届IEEE决策与控制年会 (CDC) 全会开篇报告中美国学者John Doyle教授引用国际著名学者、 哈佛大学的何毓琦 (LarryYu-Chi Ho) 教授的一个振奋人心的新观点:“控制将是21世纪的物理学 (Control will be the physics of the 21st centur

2、y) ”2。自动化科学的进展是与控制理论的发展和完善分不开的。 控制理论发展初期, 为控制系统设计控制器一般采用简单的试凑方法, 随着控制理论的发展和计算机技术的进步, 控制系统的计算机辅助设计技术作为一门学科也发展起来了。 本章首先介绍控制系统计算机辅助设计领域的形成与发展情况, 然后介绍与之密切相关的计算机软件和语言, 特别是MATLAB语言的发展概况, 还将对本书的基本框架做一个简要的概述, 以便读者更好地学习本书的内容。1.1控制系统计算机辅助设计技术的发展综述早期的控制系统设计可以由纸笔等工具容易地计算出来, 如Ziegler与Nichols于1942年提出的PID经验公式3就可以十

3、分容易地设计出来。 随着控制理论的迅速发展, 控制的效果要求越来越高, 控制算法越来越复杂, 控制器的设计也越来越困难, 这样光利用纸笔以及计算器等简单的运算工具难以达到预期的效果, 加之计算机技术的迅速发展, 于是很自然地出现了控制系统的计算机辅助设计(computer-aided control systems design,CACSD) 技术。控制系统的计算机辅助设计技术的发展目前已达到了相当高的水平, 并一直受到控制界的普遍重视。 早在1982年12月和1984年12月, 控制系统领域在国际上最权威的IEEE控制系统学会 (ControlJ.2第1章 控制系统计算机辅助设计概述Syst

4、ems Society,CSS) 的控制系统杂志 (Control Systems Magazine) 和IEEE学会的科研报告集 (Proceedings of IEEE) 分别第一次出版了关于CACSD的专刊4,5, 美国著名学者Jamshidi与Herget分别于1985年和1992年出版了两本著作来展示CACSD领域的最新进展6,7。 在如国际自动控制联合会世界大会(IFAC World Congress) 、 美国控制会议 (American Control Conference,ACC)及IEEE的决策与控制会议 (Conference on Decision and Contro

5、l,CDC) 等各种国际控制界的重要学术会议上都有有关CACSD的专题会议及各种研讨会, 可见该领域的发展是异常迅速的。 控制系统计算机辅助设计又常常称做计算机辅助控制系统工程 (computer-aided control systems engineering,CACSE) 。近三十年来, 随着计算机技术的飞速发展, 出现了很多优秀的计算机应用软件, 在控制系统的计算机辅助设计领域更是如此, 各类CACSD软件频繁出现且种类繁多, 有的是用Fortran语言编写的软件包, 有的是人机交互式软件系统, 还有专用的仿真语言, 在国际控制界广泛使用的这类软件就有几十种之多。MATLAB语言出现以

6、来, 就深受控制领域学生和研究者的欢迎, 已经成为控制界最流行、 最有影响的通用计算机语言, 成为控制界学者的首选。国内外在介绍控制系统计算机辅助设计的早期教材中, 都采用通用的计算机语言如BASIC语言6,8、Fortran语言9或C语言作为辅助的计算机语言。 随着计算机语言的发展和日益普及, 特别是代表科学运算领域最新成果的MATLAB语言的出现, 较新的著作中, 很多都采用MATLAB作为主要程序设计语言来介绍控制系统计算机辅助设计的算法1017, 在新型的自动控制理论教材中也有这样的趋势1820。 采用新型的计算机语言为主线介绍控制系统计算机辅助设计的理论与方法, 可以使读者将主要精力

7、集中在控制系统理论和方法上, 而不是将主要精力花费在没有太大价值的底层重复性机械性劳动上, 这样可以对控制系统计算机辅助设计技术有较好的整体了解, 避免 “只见树木, 不见森林” 的认识偏差, 提高控制器设计的效率和可靠性。子曰:“工欲善其事, 必先利其器” 。 跟踪国际最先进的CACSD软件环境及发展, 以当前国际上最流行的CACSD软件环境MATLAB为基本出发点来系统地介绍控制系统计算机辅助设计技术及软件实现, 从而大大提高CACSD算法研究与实际应用的水平和可靠性, 这是本书的一个主要目的。1.2控制系统计算机辅助设计语言环境综述1973年美国学者Melsa教授和Jones博士出版了一

8、本专著9, 书中给出了许多当时流行的控制系统计算机辅助分析与设计的源程序, 包括求取系统的根轨迹、 频域响应、 时域响应以及各种控制系统设计的子程序如Luenberger观测器、Kalman滤波等。 瑞典Lund工学院KarlAstr om教授主持开发的一套交互式CACSD软件INTRAC(IDPAC、MODPAC、SYNPAC、POLPAC等, 以及仿.I1.2控制系统计算机辅助设计语言环境综述3真语言SIMNON)21, 其中的SIMNON仿真语言要求用户依照它所提供的语句编写一个描述系统的程序, 然后才可以对控制系统进行仿真。 日本的古田胜久(Katsuhisa Furuta) 教授主持

9、开发的DPACS-F软件22, 在处理多变量系统的分析和设计上还是很有特色的。 在国际上流行的仿真语言ACSL、CSMP、TSIM、ESL等也同样要求用户编写模型程序, 并提供了大量的模型模块。 在这一阶段还出现了很多的专用程序, 如英国剑桥大学推出的线性系统分析与设计软件CLADP(Cambridge linear analysis and design programs)23,24与美国NASA Langley研究中心的Armstrong开发的线性二次型最优控制器设计的ORACLS(optimalregulator algorithms for the control of linear

10、systems)25等。1980年美国学者Cleve Moler等人推出的交互式MATLAB语言逐渐受到了控制界研究者的普遍重视, 从而陆续出现了许多专门用于控制理论及其CAD的工具箱, 为控制系统的分析与设计提供了极大的方便, 也为研究者开发测试新的方法提供了强有力的工具。 图形交互式的模型输入计算机仿真环境Simulink的出现为MATLAB应用的进一步推广起到了积极性的推动作用。 现在,MATLAB已经风靡全世界, 成为控制系统仿真与计算机辅助设计领域最普及也是最受欢迎的首选计算机语言。在MATLAB迅速发展的同时, 很多软件开发者针对控制系统领域的实际问题开发了专用的CACSD计算机辅

11、助设计软件, 如美国系统控制技术公司 (Systems Control Technology Inc.) 的Jack Little等人研制的CTRL-C26,Boeing公司的EASY 5及EASY5x,Integrated Systems公司的Matrix-X及Xmath,Systems Technology Incorporated公司的CC程序,Visual Simulation公司的VisSim、O-Matrix, 韩国汉城国立大学权旭铉教授主持开发的CemTool以及现在仍作为免费软件的Octave27、Scilab28等, 虽然其中很多软件是并行于MATLAB而独立开发的, 但或多

12、或少都会从这些软件的语句结构或使用方法中看出明显受到MATLAB影响的痕迹, 所以说, 从国际上最流行的MATLAB出发来介绍控制系统的计算机辅助设计技术是再合适不过的了。 这就是本书在众多CACSD软件中挑选MATLAB作为基本语言的一个最主要的原因。国际上控制系统计算机辅助设计软件的发展大致分为几个阶段: 软件包阶段、交互式语言阶段及当前的面向对象的程序环境阶段29。在早期的工作中,CACSD主要集中在软件包的编写上, 如前面提及的Melsa和Jones的著作。 从数值算法的角度上也出现了一些著名的软件包, 如美国的基于特征值的软件包EISPACK30,31和线性代数软件包LINPACK3

13、2, 英国牛津数值算法研究组 (Numerical Algorithm Group) 开发的NAG软件包33及文献34中给出的声誉颇高的数值算法程序集等, 在CACSD领域的经典软件包作品有英国Kingston Polytechnic控制系统研究组开发的SLICE(subroutine library incontrol engineering) 软件包35, 前面提及的DPACS-F、ORACLS等。 这些软件J.4第1章 控制系统计算机辅助设计概述包大都是用Fortran语言编写的源程序组成的, 给使用者提供了较好的接口, 但和MATLAB相比, 调用方法和使用明显显得麻烦、 不便。以著名

14、的EISPACK软件包为例, 若想求出N阶实矩阵A的全部特征值 (用WR、WI数组分别表示其实虚部) 和对应的特征向量矩阵Z, 则EISPACK软件包给出的子程序建议调用路径为30:CALL BALANC(NM,N,A,IS1,IS2,FV1)CALL ELMHES(NM,N,IS1,IS2,A,IV1)CALL ELTRAN(NM,N,IS1,IS2,A,IV1,Z)CALL HQR2(NM,N,IS1,IS2,A,WR,WI,Z,IERR)IF (IERR.EQ.0) GOTO 99999CALL BALBAK(NM,N,IS1,IS2,FV1,N,Z)由上面的叙述可以看出, 要求取矩阵的

15、特征值和特征向量, 首先要给一些数组和变量依据EISPACK的格式作出定义和赋值并编写出主程序, 再经过编译和连接过程形成可执行文件, 最后才能得出所需的结果。 用软件包的形式来编写程序有如下的缺点: 使用不方便。 对不是很精通EISPACK的用户来说, 直接利用软件包来编写程序是相当困难的, 也是相当容易出错的, 其中一个子程序调用格式发生微小的错误将可能导致最终得出错误的结果。 调用过程繁琐。 首先需要编写主程序, 确定对软件包的调用过程, 再经过必要的编译和连接过程, 有时还要花大量的时间去调试程序以保证其正确性, 而不是想得出什么马上就可以得出的。 执行程序过多。 想求解一个特定的问题

16、就需要编写一个专门的程序, 并形成一个可执行文件, 如果需要求解的问题很多, 就需要在计算机硬盘上同时保留很多这样的可执行文件, 这样计算机磁盘空间的利用不是很经济。 不利于传递数据。 通过软件包调用方式针对每个具体问题就能形成一个孤立的可执行文件, 在一个程序中产生的数据无法传入另一个程序, 更无法使几个程序同时执行来解决所关心的问题。 维数指定困难。 在CACSD中最重要的变量是矩阵, 如果要求解的问题维数较低, 则形成的程序就不能用于求解高阶问题, 例如文献9中的程序均定为10阶。 所以有时为使得程序通用, 往往将维数设置得很大, 这样在解小规模问题时会出现空间的浪费, 而大规模问题仍然

17、求解不了。 在优秀的软件中往往需要动态地进行矩阵定维。此外, 这里介绍的大多数早期软件包都是用Fortran语言编写的, 由于众所周知的原因, 以前Fortran语言绘图并不是轻而易举的事情, 这就需要再调用相应的软件包来做进一步处理, 在绘图方面比较实用和流行的软件包是GINO-F36, 但这种软件包只给出绘图的基本子程序, 所以要绘制较满意的图形需要用户自己用这些低级命令去编写出合适的绘图子程序来。.I1.2控制系统计算机辅助设计语言环境综述5英国剑桥大学学者John Edmunds和Jan Maciejowski等人开发的CLADP在控制界享有盛誉, 它包括了多变量系统分析与设计的多种方

18、法, 其中有Nyquist类以及特征轨迹等多变量频域设计方法, 也有线性二次型Gauss控制器 (LQG)与Kalman滤波等时域设计方法, 还可以处理时间延迟及分布系统等非有理问题。日本东京工学院的古田胜久教授主持开发的DPACS-F软件是用Fortran语言编写的, 它可以由状态空间和频域方法来分析多变量线性系统, 并可以由极点配置和LQG等方法来设计控制器, 此外还可以进行多变量系统辨识等工作。NASA的Armstrong教授编写的ORACLS则是一个十分专用的软件, 它可以用于多变量系统的LQG设计, 该软件也是用Fortran语言编写的。20世纪70年代末期和80年代初期出现了很多实

19、用的具有良好人机交互功能的软件,MATLAB就是其中的一个成功的范例, 此外前面提及的INTRAC和CTRL-C等也是优秀的人机交互式软件。正因为存在多种多样的CACSD软件, 而它们之间又各有所长, 所以在CACSD技术的发展过程中曾有过几次将若干常用软件集成在一起的尝试, 例如1984年前后美国学者Spang III教授曾将当时流行的SIMNON、CLADP、IDPAC及他自己研制的SSDP(state space design program) 集成在一起, 形成了一个强大的软件37, 各个组成软件之间是靠读写文件的方式来传递数据的, 这多少可以解决前面提及的程序之间不能传递数据的弊病。

20、1986年前后由英国科学与工程委员会 (SERC) 资助,Howard H Rosenbrock教授和Neil Munro教授主持的、 英国多所大学和研究机构参与的ECSTASY(environment for controlsystem theory and synthesis) 软件环境的开发项目38, 在该软件中试图将流行的新一代软件如MATLAB、ACSL、TSIM甚至当时刚出现的Mathematica39等集成到一个框架之下, 该软件还可以同时自动采用LATEX40和FrameMaker等来输出专业的排版结果, 并取得了一些成效。 各个软件之间的数据传递是通过数据库来实现的,ECST

21、ASY定义了方便实用的CACSD新命令, 比当时的MATLAB更为简洁。ECSTASY这样的软件是一个有益的尝试, 但该软件当时只可以在SUN工作站上运行, 并没有考虑PC的兼容性。依作者之见, 这些单纯集成出来的软件并不是很成功的, 因为它们并没有达到预期的效果。 事实上, 从那以后每个软件的功能都有了明显的改善,MATLAB语言有了自己的仿真功能, 其仿真工具Simulink从某种意义上来讲功能和接口远远优于ACSL,MATLAB和Mathematica之间也有了较好的接口,MATLAB的符号运算工具箱也可以进行解析推导, 它们的优势可以得到充分地互补。我国较有影响的控制系统仿真与计算机辅

22、助设计成果是中科院系统科学研究所韩京清研究员等主持的国家自然科学基金重大项目开发的CADCSC软件41、清华大学孙增圻、 袁曾任教授的著作和程序8与北京化工学院吴重光、 沈承林教授的著作和程序42等。J.6第1章 控制系统计算机辅助设计概述1.3仿真软件的发展概况从前面提及的软件包的局限性看, 直接调用它们进行系统仿真将有较大的困难, 因为要掌握这些函数的接口是一件相当复杂的事, 准确调用它们将更难; 此外,有的软件包函数调用直接得出的结果可信度也不是很高, 因为软件包的质量和水平参差不齐。抛弃成型的软件包另起炉灶自己编写程序也不是很现实, 毕竟在成型软件包中包含有很多同行专家的心血, 有时自

23、己从头编写程序很难达到这样的效果, 所以必须采用经过验证且信誉著称的高水平软件包或计算机语言来进行仿真研究。仿真技术引起该领域各国学者、 专家们的重视, 建立起国际的仿真委员会(Simulation Councils Inc.,SCi) , 该委员会于1967年通过了仿真语言规范。 仿真语言CSMP(computer simulation modelling program) 应该属于建立在该标准上的最早的专用仿真语言。 中科院沈阳自动化研究所在1988年推出了该语言的推广版本 CSMP-C。20世纪80年代初期, 美国Mitchell and Gauthier Associates公司推出了

24、符合该标准的著名连续系统仿真语言ACSL(advanced continuous simulationlanguage)43, 该语言出现后, 由于其功能较强大, 并有一些系统分析的功能, 很快就在仿真领域占据了主导地位。和ACSL大致同时产生的还有瑞典Lund工学院KarlAstr om教授主持开发的SIMNON, 英国Salford大学的ESL44等, 这些语言的编程语句结构也是很类似的, 因为它们所依据的标准都是相同的。计算机代数系统是在本领域中又一个吸引人的主题, 而解决数学问题解析计算又是C语言直接应用的难点。 于是国际上很多学者在研究、 开发高质量的计算机代数系统。 早期IBM公司

25、开发的muMATH45和REDUCE46等软件为解决这样的问题提出了新的思路。 后来出现的Maple和Mathematica逐渐占领了计算机代数系统的市场, 成为比较成功的实用工具。早期的Mathematica可以和MATLAB语言交互信息, 比如通过一个称为MathLink的软件接口就可以很容易地完成这样的任务。 为了解决计算机代数问题,MATLAB语言的开发者 美国MathWorks公司也研制开发了符号运算工具箱 (Symbolic Math Toolbox) , 该工具箱将Maple语言的内核作为MATLAB符号运算的引擎, 使得二者能更好地结合起来。这些软件和语言还是很昂贵的, 所以有

26、人更倾向于采用免费的, 但编程结构类似于MATLAB的计算机语言, 如Octave27和Scilab等,Scilab配套的Scicos也支持基于框图的建模与仿真方法, 这些软件的全部源程序也是公开的, 有较高的透明度, 但目前它们的功能已经无法与越来越强大的MATLAB语言相比。系统仿真领域有很多自己的特性, 如果能选择一种能反映当今系统仿真领域最高水平, 也是最实用的软件或语言介绍仿真技术, 使得读者能直接采用该语言解.I1.4 MATLAB/Simulink与CACSD工具箱7决自己的问题, 将是很有意义的。 实践证明,MATLAB就是这样的仿真软件, 由于它本身卓越的功能, 已经使得它成

27、为自动控制、 航空航天、 汽车设计等诸多领域仿真的首选语言。 所以在本书中将介绍基于MATLAB/Simulink的控制系统仿真与设计方法及其应用。1.4MATLAB/Simulink 与 CACSD 工具箱MATLAB语言的首创者Cleve Moler教授在数值分析, 特别是在数值线性代数的领域中很有影响3032,4749。 他曾在密西根大学、 斯坦福大学和新墨西哥大学任数学与计算机科学教授。1980年前后, 时任新墨西哥大学计算机系主任的Moler教授在讲授线性代数课程时, 发现了用其他高级语言编程极为不便, 便构思并开发了MATLAB(MATrix LABoratory, 即矩阵实验室)

28、50, 这一软件利用了他参与研制的、 在国际上颇有影响的EISPACK31(基于特征值计算的软件包) 和LINPACK32(线性代数软件包) 两大软件包中可靠的子程序, 用Fortran语言编写了集命令翻译、 科学计算于一身的一套交互式软件系统。所谓交互式语言, 是指用户给出一条命令, 立即就可以得出该命令的结果。该语言无须像C和Fortran语言那样, 首先要求使用者去编写源程序, 然后对之进行编译、 连接, 最终形成可执行文件。 这无疑会给使用者带来极大的方便。 在MATLAB下, 矩阵的运算变得异常容易, 所以它一出现就广受欢迎, 这一系统逐渐发展、 完善, 逐步走向成熟, 形成了今天的

29、模样。早期的MATLAB只能作矩阵运算; 绘图也只能用极其原始的方法, 即用星号描点的形式画图; 内部函数也只提供了几十个。 但即使其当时的功能十分简单, 当它作为免费软件出现以来, 还是吸引了大批的使用者。Cleve Moler和Jack Little等人于1984年成立了一个名为The MathWorks的公司,Cleve Moler任该公司的首席科学家。 当时的MATLAB版本已经用C语言作了完全的改写, 其后又增添了丰富多彩的图形图像处理、 多媒体功能、 符号运算和它与其他流行软件的接口功能, 使得MATLAB的功能越来越强大。最早的PC版又称为PC-MATLAB, 其工作站版本又称为

30、Pro MATLAB。1990年推出的MATLAB 3.5i版是第一个可以运行于Microsoft Windows下的版本, 它可以在两个窗口上分别显示命令行计算结果和图形结果。 稍后推出的SimuLAB环境首次引入了基于框图的建模与仿真功能, 其模型输入的方式令人耳目一新, 该环境就是现在所知的Simulink的前身。The MathWorks公司于1992年推出了具有划时代意义的MATLAB 4.0版本, 并于1993年推出了其PC版, 充分支持在Microsoft Windows进行界面编程。1994年推出的4.2版本扩充了4.0版本的功能, 尤其在图形界面设计方面更提供了新的方法。19

31、96年12月推出的MATLAB 5.0版支持了更多的数据结构, 如单元数据、 数据结构体、 多维数组、 对象与类等, 使其成为一种更方便、 完美的编程语言。1999年初推出的MATLAB 5.3J.8第1章 控制系统计算机辅助设计概述版在很多方面又进一步改进了MATLAB语言的功能, 随之推出的全新版本的最优化工具箱和Simulink 3.0版达到了很高的档次。2000年9月,MATLAB 6.0问世, 在操作界面上有了很大改观, 同时还给出了程序发布窗口、 历史信息窗口和变量管理窗口等, 为用户的使用提供了很大的方便; 在计算内核上抛弃了其一直使用的LINPACK和EISPACK, 而采用了

32、更具优势的LAPACK软件包和FFTW系统, 速度变得更快, 数值性能也更好; 在用户图形界面设计上也更趋合理; 与C语言接口及转换的兼容性也更强; 与之配套的Simulink 4.0版的新功能也特别引人注目。2004年6月推出的MATLAB 7.0版引入的多领域物理建模仿真策略为控制系统仿真技术提供了全新的仿真理念和平台。2012年9月推出的MATLAB 8.0版提供了全新的操作界面, 如图1-1所示。 另外, 该版本还提供了更强大的工具、 全新的Simulink编辑器与更强大的仿真功能。图 1-1MATLAB 8.0 程序界面MathWorks公司每年在3月和9月分别推出a版和b版, 当前

33、最新的版本是MATLAB R2012b(8.0版) , 其功能越来越强大, 然而其符号运算功能由于引擎的更换有所减弱。 在使用符号运算功能时建议使用MATLAB R2008a或以前的版本, 其他内容可以尽量采用新的版本。 如果有条件的话建议同时安装两个版本, 兼顾各方面的应用需求。 本书以MATLAB R2012b为主介绍MATLAB/Simulink及其应用, 其中绝大部分内容同样适用于MATLAB的早期版本。目前,MATLAB已经成为国际上最流行的科学与工程计算的软件工具, 现在的MATLAB已经不仅仅是一个 “矩阵实验室” 了, 它已经成为一种具有广泛应用前景的、 全新的计算机高级编程语

34、言了, 有人称它为 “第四代” 计算机语言, 它在国内外高校和研究部门正扮演着重要的角色。MATLAB语言的功能也越来越强大,不断适应新的要求提出新的解决方法。 另外, 很多长期以来对MATLAB有一定竞.I1.5控制系统计算机辅助设计领域方法概述9争能力的软件 (如Matrix-X) 已经被MathWorks公司吞并, 所以可以预见, 在科学运算与系统仿真领域MATLAB语言将长期保持其独一无二的地位。MATLAB目前已经成为控制界国际上最流行的软件, 它除了传统的交互式编程之外, 还提供了丰富可靠的矩阵运算、 图形绘制、 数据处理、 图像处理、 方便的Microsoft Windows编程

35、等便利工具。 此外, 控制界很多学者将自己擅长的CAD方法用MATLAB加以实现, 出现了大量的MATLAB配套工具箱, 如控制界最流行的控制系统工具箱 (Control System Toolbox) 、 系统辨识工具箱(System Identification Toolbox) 、 鲁棒控制工具箱 (Robust Control Toolbox) 、多变量频域设计工具箱 (Multivariable Frequency Design Toolbox) 、分析与综合工具箱 (-Analysis and Synthesis Toolbox) 、 神经网络工具箱 (NeuralNetwork

36、Toolbox) 、 最优化工具箱 (Optimization Toolbox) 、 信号处理工具箱(Signal Processing Toolbox) 以及仿真环境Simulink。 参与编写这些工具箱的设计者包括国际控制界的名流, 如Alan Laub、Michael Sofanov、Leonard Ljung、Jan Maciejowski等这些在相应领域的著名专家, 这当然地提高了MATLAB的声誉与可信度, 使得MATLAB风靡国际控制界, 成为最重要也是最流行的语言。下面列出一些有价值的网站供读者参考http:/ MathWorks官网,MATLAB及工具箱手册http:/ 控制

37、系统的设计是相当简单的, 比如可以用Ziegler-Nichols经验公式3利用纸和笔等简单的工具来设计较实用的PID控制器, 这种现象持续了很长的时间。随着计算机技术的发展, 特别是像MATLAB这样方便可行的CACSD工具的出现, 控制系统的计算机辅助设计在理论上也有了引人注目的进展, 人们已经不满足于由纸和笔这样的简单工具设计出来的控制器了, 而是期望越来越高。 例如人们往往期望获得某种意义下的 “最优” 控制效果, 而这样的控制效果确实是原来依赖纸和笔这样简单工具所实现不了的, 而必须借助于计算机这样的高级工具, 从而控制系统计算机辅助设计技术也就应运而生了。早期的CACSD研究侧重于

38、对控制系统的计算机辅助分析上, 开始时人们利用计算机的强大功能把系统的频率响应曲线绘制出来, 并根据频率响应的曲线及自己的控制系统设计经验用试凑的方法设计一个控制器, 然后利用仿真的方法去观察设计的效果, 比较成功的试凑设计方法有超前滞后校正方法等, 当然这样的方法更适合于单变量系统的设计, 前面提及以Rosenbrock教授和MacFarlane教J.10第1章 控制系统计算机辅助设计概述授为代表的英国学派多变量频域设计方法就是这种设计风格的范例。 以色列裔美国学者Issac Horowitz教授在频域设计方法中独辟蹊径, 创立了比较完善的设计方法 定量反馈理论 (quantitative

39、feedback theory,QFT)51, 在反馈的效果上大作文章, 在频域设计领域发展过程中, 这些学者往往依赖于他们自己编写的CACSD工具来进行研究, 并出现了很多值得提及的软件 (如CLADP) , 后来随着MATLAB的发展, 也出现了各种各样的MATLAB工具箱, 如Jan Maciejowski等学者开发的多变量系统频域设计工具箱52和美国学者Craig Borghesani和Yossi Chait等编写的QFT设计工具箱53等。除了经典的多变量频域方法之外, 还出现了一些基于最优化技术的控制方法,其中比较著名的是英国学者John Edmunds提出的多变量参数最优化控制方法

40、和英国学者Zakian提出的不等式控制方法 (method of inequalities)54等, 这些方法都是行之有效的实用设计方法。与此同时, 美国学者似乎更倾向于状态空间的表示与设计方法 (往往又称为时域方法,time-domain) , 首先在线性二次型指标下引入了最优控制的概念, 并在用户的干预下 (如人工选择加权矩阵) 得出某种最优控制的效果, 这样的控制又往往需要引入状态反馈或状态观测器等新的控制概念。 此后为了考虑随机扰动的情况引入了LQG最优控制的设计方法, 后来随着LQG控制固有的弊病提出了回路传输恢复 (loop transfer recovery,LTR) 等新技术,

41、 但直到这类状态空间方法找到了合适的频域解释之后才开始有了应用。 此外在状态空间的设计方法中比较成型的方法有极点配置方法、 多变量系统解耦控制设计等, 这些状态空间方法在计算方法和理论证明上取得了很多成果。从控制系统的鲁棒性 (robustness) 角度也出现了各种各样的控制方法。 首先由美国学者Zames提出的最小灵敏度控制策略引起了各国研究者的瞩目, 并对之加以改进, 出现了各种H最优控制的方案。 所谓H实际上是物理可实现的稳定系统集合的一种数学描述 (因满足Hardy空间而得名) ,H控制的一个关键问题是Youla参数化方法, 该方法可以给出所有满足要求的控制器的通式。H的解法也是多种

42、多样的, 首先人们考虑通过Youla参数化方法构造出全部镇定控制器,并将原始问题转化成模型匹配 (如Hankel近似) 的一般问题, 然后再对该问题求解, 后来多采用状态空间的解法, 因为这样的解法更直观、 容易, 也更简洁。 后来随着控制器的阶次越来越高, 还出现了很多的控制器降阶方法来实现设计出的控制器。 线性矩阵不等式 (linear matrix inequalities,LMI) 及分析与综合等控制系统设计方法也在控制界有较大的影响, 而这些方法不通过计算机这样的现代化工具是不能完成的。瑞典学者KarlAstr om教授的研究更加切合于过程控制的实际应用, 在他的研究成果中经常可以发

43、现独创性的内容, 例如他和合作者对传统的, 也是工业中应用最广泛的PID控制器进行了改进, 提出了自整定PID控制器55的思想, 使得原.I1.6本书的基本结构和内容11来需要离线调节的PID控制器参数能够容易地在线自动调节, 并在研究中取得了丰硕的成果, 还推出了自整定PID控制器的硬件产品。 在自整定PID控制器的领域也出现了很多比较显著的进展, 这类研究的基本思想是使得复杂问题简单化, 并易于实际应用。分数阶控制是近年蓬勃发展起来的较新的研究方向56, 领域也出现了很多新的研究成果, 是控制理论的一个较新的研究领域。国际上也出版了关于MATLAB及CACSD的专著和教材1012, 但它们

44、大都是MATLAB的入门教材, 并没有真正深入、 系统地探讨CACSD技术及MATLAB实现, 将MATLAB的强大功能与控制领域成果有机结合是本书力图解决的主要问题。 本书第一版是国内第一部将MATLAB语言和控制系统设计技术有机结合的著作, 曾在控制系统及相关学科的教学与研究中有较大的影响, 本版进一步充实相关内容, 大大提高了所涉及问题的深度与广度。1.6本书的基本结构和内容对控制系统进行仿真与计算机辅助设计的工作可以认为是三个阶段的有机结合, 即所谓的MAD(modelling、analysis、design, 即系统建模、 分析与设计) 过程,首先需要给系统建立起数学模型, 然后根据

45、数学模型进行仿真分析。 在系统分析时如果发现与实际系统不符, 则可能是系统的数学模型有问题, 需要重新建模再进行分析。 建立起准确的数学模型, 并分析了系统的性质后, 就可以根据要求给系统设计控制器。 设计后可以对系统在控制器作用下的性质进行分析, 如果不理想则应该重新设计控制器, 再返回分析过程, 直至得到满意的控制效果。 当然, 在系统分析与设计的过程中有时还需要对系统模型进行修正。围绕控制系统仿真与计算机辅助设计的几个阶段, 本书各章内容安排如下:本章对国际上最流行的一些CACSD专用软件, 如ACSL、MATLAB、Mathe-matica等做简要的介绍, 然后对CACSD领域的新策略

46、和新成果做一个概略的叙述, 阐述了为什么在控制系统仿真与计算机辅助设计领域应该采用MATLAB作为主要计算机语言的原因。第2章系统地介绍MATLAB编程的基础, 包括对赋值语句、 控制结构和绘图语句等程序设计问题, 还介绍了MATLAB主流的程序设计方法, 即函数编写方法与技巧。 该章介绍了MATLAB语言二维、 三维图形显示方法, 并介绍了图形用户界面设计方面的基础知识与设计技巧。第3章叙述了和控制系统仿真与设计领域密切相关的科学运算问题求解方法。 介绍了MATLAB语言在线性代数、 代数方程、 微分方程、 最优化及Laplace和z变换等几个与控制系统密切相关的科学运算问题上的应用。第4章

47、介绍在MATLAB环境中如何表示各种各样的线性系统数学模型。 这里介绍的方法适用于连续与离散模型、 单变量与多变量模型, 为本书的理论基础。J.12第1章 控制系统计算机辅助设计概述该章还对方框图模型的连接与化简、 各种数学模型之间的相互转换等给出较详细的叙述, 还介绍了高阶模型的各种降阶方法和离散模型的辨识方法, 探讨了辨识用激励信号问题。第5章介绍线性控制系统的基本分析方法。 首先介绍了控制系统的定性分析方法, 如稳定性、 可控性与可观测性等, 还给出了线性系统的范数测度等概念与求解方法。 该章讨论了线性系统的时域解析解方法与仿真方法, 介绍了单变量与多变量系统的频域分析方法与根轨迹分析方

48、法, 侧重于如何用MATLAB语言解决相关问题的方法。 学习这些方法将有助于控制系统的控制器设计。第6章介绍基于Simulink的非线性系统建模方法与技巧。 先介绍了各个常用的Simulink模块组, 然后介绍了利用Simulink模块搭建仿真系统的方法, 并介绍了仿真参数的设置方法、 仿真中的子系统与模块封装技术以及S-函数的编写方法。掌握了这些方法, 理论上可以搭建起任意复杂系统的仿真模型。第7章介绍各种经典的控制系统设计方法, 包括系统的串联控制器的设计方法, 基于二次型最优控制和极点配置的状态反馈控制方法, 观测器的设计与基于观测器的控制器设计方法, 最优控制器的设计方法与设计程序,

49、多变量系统的频域设计方法和多变量控制系统的解耦方法等。第8章侧重于工业上最常用的PID类控制器设计方法, 包括各种PID控制器的结构、 过程模型的一阶延迟近似、 常规PID控制器整定方法、 一般模型的PID控制器整定方法, 并着重介绍作者编写的OptimPID用户界面, 设计出性能最优的PID控制器。第9章介绍各类系统的鲁棒控制器设计方法, 包括基于LQG/LTR的鲁棒控制器设计方法、H鲁棒控制问题及求解方法等, 并介绍基于定量反馈理论的鲁棒控制器设计方法与工具。第10章介绍自适应控制与智能控制系统的建模、 仿真与设计问题, 包括模型参考自适应系统、 自校正控制与广义预测控制的仿真, 模糊逻辑

50、与模糊逻辑控制器设计、 仿真研究, 神经网络与基于各种神经网络结构的PID控制器设计与仿真, 遗传算法、 粒子群算法在最优化问题求解中的应用及最优控制器设计等。第11章介绍分数阶系统的控制问题, 包括分数阶微积分的定义, 分数阶微分方程的框图解法等基础内容, 也将以分数阶传递函数为例, 介绍MATLAB的类与对象编程方法, 介绍基于面向对象技术的分数阶系统建模、 分析与设计技术。第12章搭建起控制系统设计软件与硬件实现之间的桥梁, 系统地介绍了基于dSPACE、Quanser等软硬件系统的控制系统半实物仿真及实时控制方法, 为控制理论及方法的工程应用打下一定的基础。本书附录介绍几个用于控制系统

51、计算机辅助设计软件测试用的基准问题与控制应用问题, 用户可以从这些典型的受控对象模型出发, 测试各种自己设计出来的控制器, 得到公平的比较结果。.I1.7习 题131.7习 题(1) MathWorks 公司网站 (http:/) 上提供了 MATLAB 及所有工具箱手册的电子版, 如果需要, 可以将感兴趣的工具箱手册下载阅读。 由于工具箱规模过于庞大, 不可能在一本书中全盘介绍, 所以本书的作用只是作为读者学习和使用 MATLAB 语言解决控制中问题的入门指导性材料。(2) MATLAB 语言是控制系统研究的首选语言, 本书以该语言为主线介绍课程的内容。 请在机器上安装 MATLAB 程序,

52、 在提示符下输入 demo 命令, 运行演示程序,领略 MATLAB 语言的基本功能。(3) 学会利用 MATLAB 语言提供的联机帮助功能, 更好地学习 MATLAB 语言, 熟练掌握查找需要了解内容的方法和技巧。 联机帮助可以由 help 命令或 Help 菜单来实现, 还可以用 doc 命令获得帮助。(4) MATLAB 语言中求取两个矩阵的乘积用 C = A B 即可, 再试用 C 或其他计算机语言编写一个通用的子程序, 计算两个矩阵 A 和 B 的乘积, 体验一下通用程序编写和 MATLAB 现成功能调用的区别。(5) 矩阵运算是 MATLAB 最传统的特色, 用 B = inv(A

53、) 命令即可以求出 A 的逆矩阵, 感受 MATLAB 在求解逆矩阵时的运算效率。 想求一个 n 阶随机矩阵的逆, 分别取 n=550 和 n=1550, 测试矩阵求逆所需的时间及结果的正确性。 具体语句: tic, A = rand(550); B = inv(A); toc norm(A*B-eye(size(A), norm(B*A-eye(size(A)(注: 由矩阵的性质可知, AB = BA = I, 故用 |AB I| 即可以得出误差)(6) 在求解数学问题时, 不同的算法在求解精度与速度上是不同的。 考虑求取矩阵行列式的代数余子式方法, 可以将 n 阶矩阵的行列式问题转化成 n

54、 个 n 1 阶矩阵的行列式问题, n 1 阶矩阵又可以转化成 n 2 阶。 因而可以得出结论: 任意阶矩阵行列式均可以由代数余子式方法求出解析解。 然而, 这样的结论忽略了计算量的问题, 用这样的方法, n 阶矩阵行列式求解的计算量为 (n 1)(n + 1)! + n, n = 20 的计算量相当于每秒百亿次的巨型计算机求解 3000 多年, 所以用该方法不可能真正用于大型矩阵的行列式求解。由矩阵运算可知, 可以将矩阵进行 LU 分解, 计算出矩阵的行列式, MATLAB的解析解运算也实现了这样的算法, 可以在短时间内求解出矩阵的行列式。 试用MATLAB 语言求解 20 阶矩阵的行列式解

55、析解, 需要使用多少时间。 具体参考语句tic, A = sym(hilb(20); det(A); toc(7) 试用不同的计算机数学语言如 Mathematica、 Maple、 MATLAB 及 MATLAB 的符号运算工具箱分别求解代数方程 (x + 1)20= 0, 比较得出结果, 并说明解决这样的问题应该注意什么 (注: 求解前应该先将方程左侧展开成一般的多项式) 。J.14第1章 控制系统计算机辅助设计概述(8) MATLAB 语言的 Simulink 仿真程序允许用户用直观的方法搭建控制系统的框图, 试利用 Simulink 提供的模块搭建起一个如图 1-2 所示的模型, 请研

56、究 = 0.3时不同输入信号激励下系统的响应曲线, 另外请研究不同的 值对系统的阶跃响应有何影响, 通过这个例子可以领略利用仿真工具的优势及方便程度。1(s + 1)3-6-6r(t)y(t)图 1-2某非线性反馈系统框图参考文献1 戴先中. 自动化科学与技术学科的内容、 地位与体系. 北京: 高等教育出版社, 20032 Doyle J C. A new physics? 40th IEEE Conference on Decision and Control 全会开篇大会报告. Orlando: IEEE Publisher, 20003 ZieglerJ G, NicholsN B. O

57、ptimum settings for automatic controllers. Transactionof ASME, 1944, 64:7597684 Herget C J, Laub A J (eds.).Special issue on computer-aided control systemdesign. IEEE Control Systems Magazine, 1982, 2(4):2375 Herget C J, Laub A J (eds.).Special issue on computer-aided control systemdesign. Proceedin

58、gs of IEEE, 1984, 72:171418056 Jamshidi M, Herget C J. (eds.).Computer-aided control systems engineering.Amsterdam: Elsevier Science Publishers B V, 19857 Jamshidi M, Herget C J. (eds.).Recent advances in computer-aided controlsystems engineering. Amsterdam: Elsevier Science Publishers B V, 19928 孙增

59、圻, 袁曾任. 控制系统的计算机辅助设计. 北京: 清华大学出版社, 19889 Melsa J L, Jones S K. Computer programs for computational assistance in thestudy of linear control theory. New York: McGraw-Hill, 197310 Shahian B, Hassul M. Computer-aided control system design using MATLAB.Englewood Cliffs: Prentice-Hall, 199311 Leonard N E

60、, Levine W S. Using MATLAB to analyze and design control systems.Redwood City: Benjamin Cummings, 199312 Ogata K. Solving control engineering problems with MATLAB. Englewood Cliffs:Prentice Hall, 199413 Mo sci nski J, Ogonowski Z.Advanced control with MATLAB and Simulink.London: Ellis Horwood, 19951

61、4 薛定宇. 控制系统计算机辅助设计 MATLAB 语言与应用. 北京: 清华大学出版社, 199615 张晓华. 控制系统计算机仿真与 CAD. 北京: 机械工业出版社, 1999.I1.7参考文献1516 薛定宇. 反馈控制系统的设计与分析 MATLAB 语言应用. 北京: 清华大学出版社, 200017 薛定宇. 控制系统仿真与计算机辅助设计. 北京: 机械工业出版社, 200518 Kuo B C. Automatic control systems. Wiley, 8th edition, 200319 DAzzo J J, Houpis C H. Linear control sy

62、stem analysis and design: conventionaland modern. New York: McGraw-Hill, 4th edition, 199520 Ogata K.Modern control engineering.Englewood Cliffs: Prentice Hall, 4thedition, 200121Astr om K J. Computer aided tools for control system design, In: Jamshidi M,Herget C J. Computer-aided control systems en

63、gineering. Amsterdam: ElsevierScience Publishers B V, 1985, 34022 Furuta K. Computer-aided design program for linear control systems. Proceedingsof IFAC Symposium on CACSD, 1979, 267272. Zurich, Switzerland23 Edmunds J M. Cambridge linear analysis and design programs. Proceedings IFACSymposium on CA

64、CSD, 1979, 253258. Zurich, Switzerland24 Maciejowski J M, MacFarlane A G J. CLADP: the Cambridge linear analysis anddesign programs, In: Jamshidi M, Herget C J. Computer-aided control systemsengineering. Amsterdam: Elsevier Science Publishers B V, 1985, 12513825 Armstrong E S. ORACLS a design system

65、 for linear multivariable control. NewYork: Marcel Dekker Inc., 198026 Little J N, Emami-Naeini A, Bangert S N. CTRL-C and matrix environmentsfor the computer-aided design of control systems, In: Jamshidi M, Herget CJ. Computer-aided control systems engineering.Amsterdam: Elsevier SciencePublishers

66、B V, 1985, 19120527 Octave 语言主页. http:/www.octave.org28 SciLAB 语言主页. http:/scilabsoft.inria.fr29 Jobling C P, Grant P W, Barker H A, Townsend P. Object-oriented programmingin control system design: a survey. Automatica, 1994, 30:1221126130 Smith B T, Boyle J M, Dongarra J J. Matrix eigensystem routi

67、nes EISPACKguide, Lecture Notes in Computer Sciences, volume6. New York: Springer-Verlag,2nd edition, 197631 Garbow B S, Boyle J M, Dongarra J J, Moler C B. Matrix eigensystem routines EISPACK guide extension, Lecture Notes in Computer Sciences, volume 51.New York: Springer-Verlag, 197732 Dongarra J

68、 J, Bunch J R, Moler C B, Stewart G W. LINPACK users guide.Philadelphia: Society of Industrial and Applied Mathematics (SIAM), 197933 Numerical Algorithm Group. NAG FORTRAN library manual, 198234 Press W H, Flannery B P, Teukolsky S A, Vitterling W T. Numerical recipes, theart of scientific computin

69、g. Cambridge: Cambridge University Press, 198635 Atherton D P.Control systems computed.Physics in Technology, 1985,16:13914036 CAD Center. GINO-F Users manual, 1976J.16第1章 控制系统计算机辅助设计概述37 Spang III H A. The federated computer-aided design system, In: Jamshidi M,Herget C J. Computer-aided control sys

70、tems engineering. Amsterdam: ElsevierScience Publishers B V, 1985, 20922838 Munro N. ECSTASY a control system CAD environment. Proceedings IEEConference on Control 88, 1988, 7680. Oxford39 Wolfram S. Mathematica: a system for doing mathematics by computer. RedwoodCity, California: Addison-Wesley Pub

71、lishing Company, 198840 Lamport L. LATEX: a document preparation system users guide and referencemanual. Reading MA: Addision-Wesley Publishing Company, 2nd edition, 199441 王治宝, 韩京清. CADCSC 软件系统 控制系统计算机辅助设计. 北京: 科学出版社, 199742 吴重光, 沈承林. 控制系统计算机辅助设计. 北京: 机械工业出版社, 198843 Mitchell E E L, Gauthier J S. A

72、dvanced continuous simulation language (ACSL) users manual. Mitchell & Gauthier Associates, 198744 Hay J L, Pearce J G, Turnbull L, Crosble R E. ESL software user manual. Salford:ISIM Simulation, 198845 WooffC, Hodgkinson D. muMATH: A microcomputer algebra system. London:Academic Press, 198746 Rayna

73、 G. REDUCE software for algebraic computation. New York: Springer-Verlag, 198747 Forsythe G E, Malcolm M A, Moler C B. Computer methods for mathematicalcomputations. Englewood Cliffs: Prentice-Hall, 197748 Forsythe G E, Moler C B.Computer solution of linear algebraic systems.Englewood Cliffs: Prenti

74、ce-Hall, 196749 Molor C B. Numerical computing with MATLAB. MathWorks Inc, 200450 Moler C B. MATLAB An interactive matrix laboratory. Technical Report 369,Department of Mathematics and Statistics, University of New Mexico, 198051 Horowitz I. Quantitative feedback theory (QFT). Proceedings IEE, Part

75、D, 1982,129:21522652 Boyel J M, Ford M P, Maciejowski J M. A multivariable toolbox for use withMATLAB. IEEE Control Systems Magazine, 1989, 9:596553 Borghesani C, Chait Y, Yaniv O.The QFT frequency domain control designtoolbox for use with MATLAB. Terasoft Inc, 200354 Zakian V, Al-Naib U. Design of

76、dynamical and control systems by the method ofinequalities. Proceedings of IEE, Part D, 1973, 120:1421142755Astr om KJ, H agglund T. Automatic tuning of simple regulators with specificationon phase and amplitude margins. Automatica, 1984, 20:64565156 Monje C A, Chen Y Q, Vinagre B M, Xue D, Feliu V.

77、 Fractional-order systemsand controls fundamentals and applications. London: Springer, 2010第第第2章章章MATLAB 语语语言言言程程程序序序设设设计计计基基基础础础MATLAB语言是当前国际上自动控制领域的首选计算机语言,也是很多理工科专业最适合的计算机数学语言。 本书以MATLAB语言为主要计算机语言, 系统、 全面地介绍其在控制系统建模、 分析与计算机辅助设计中的应用。 掌握该语言不但有助于更深入理解和掌握控制理论中的概念与算法, 提高分析与设计控制系统的能力, 而且还可以充分利用该语言, 在其他

78、专业课程的学习中得到积极的帮助。和其他程序设计语言相比,MATLAB语言有如下的优势: 简洁高效性。MATLAB程序设计语言集成度高, 语句简洁, 往往用C/C+等程序设计语言编写的数百条语句, 用MATLAB语言一条语句就能解决问题, 其程序可靠性高、 易于维护, 可以大大提高解决问题的效率和水平。 科学运算功能。MATLAB语言以矩阵为基本单元, 可以直接用于矩阵运算。 另外, 最优化问题、 数值微积分问题、 微分方程数值解问题、 数据处理问题等都能直接用MATLAB语言求解。 绘图功能。MATLAB语言可以用最直观的语句将实验数据或计算结果用图形的方式显示出来, 并可以将以往难以显示出来

79、的隐函数直接用曲线绘制出来。MATLAB语言还允许用户用可视的方式编写图形用户界面, 其难易程度和Visual Basic相仿, 这使得用户可以容易地利用该语言编写通用程序。 庞大的工具箱与模块集。MATLAB是被控制界的学者 “捧红”的, 是控制界通用的计算机语言, 在应用数学及控制领域几乎所有的研究方向均有自己的工具箱, 而且由领域内知名专家编写, 可信度比较高。 随着MATLAB的日益普及, 在其他工程领域也出现了工具箱,这也大大促进了MATLAB语言在各个领域的应用。强大的动态系统仿真功能。Simulink提供的面向框图的仿真及多领域物理仿真功能, 使得用户能容易地建立复杂系统模型,

80、准确地对其进行仿真分析。Simulink的多领域物理仿真模块集允许用户在一个J.18第2章MATLAB语言程序设计基础统一的框架下对含有控制环节、 机械环节和电子、 电机环节的机电一体化系统进行建模与仿真, 这是目前其他计算机语言无法做到的。本章中的内容安排如下:2.1节介绍MATLAB语言编程的最基本内容, 包括数据结构、 基本语句结构和重要的冒号表达式与子矩阵提取方法。2.2节介绍MATLAB语言中矩阵的基本数学运算, 包括代数运算、 逻辑运算、 比较运算及简单的数论运算函数。2.3节介绍MATLAB语言的基本编程结构, 如循环语句结构、 条件转移语句结构、 开关结构和试探结构, 介绍各种

81、结构在程序设计中的应用。2.4节介绍MATLAB语言编程中主流结构 M-函数的结构与程序编写技巧。2.5节介绍基于MATLAB语言的二维图形绘制的方法, 如各种二维曲线绘制、 隐函数的曲线绘制等, 并将介绍图形修饰方法等。2.6节介绍三维图形的绘制方法、 三维图形旋转与视角设置等。2.7节介绍图形用户界面的设计方法与技巧。2.1MATLAB 程序设计语言基础2.1.1MATLAB 语言的变量与常量MATLAB语言变量名应该由一个字母引导, 后面可以跟字母、 数字、 下划线等。 例如,MYvar12、MY Var12和MyVar12均为有效的变量名, 而12MyVar和MyVar12为无效的变量

82、名。 在MATLAB中变量名是区分大小写的, 也就是说,Abc和ABc两个变量名表达的是不同的变量, 在使用MATLAB语言编程时一定要注意。在MATLAB语言中还为特定常数保留了一些名称, 虽然这些常量都可以重新赋值, 但建议在编程时应尽量避免对这些量重新赋值。eps, 机器的浮点运算误差限。PC上eps的默认值为2.22041016, 若某个量的绝对值小于eps, 则可以认为这个量为0。i和j。 若i或j量不被改写, 则它们表示纯虚数量j。 但在MATLAB程序编写过程中经常事先改写这两个变量的值, 如在循环过程中常用这两个变量来表示循环变量, 所以应该确认使用这两个变量时没有被改写。 如

83、果想恢复该变量, 则可以用语句i = sqrt(1)设置, 即对1求平方根。Inf, 无穷大量+的MATLAB表示, 也可以写成inf。 同样地,可以表示为Inf。 在MATLAB程序执行时, 即使遇到了以0为除数的运算, 也不会终止程序的运行, 而只给出一个 “除0” 警告, 并将结果赋成Inf, 这样的定义方式符合IEEE的标准。 从数值运算编程角度看, 这样的实现形式明显优于C语言这类的非专业的计算机语言。NaN, 不定式 (not a number,NaN) , 通常由0/0运算、Inf/Inf及其他可能的运算得出。NaN是一个很奇特的量, 如NaN与Inf的乘积仍为NaN。pi, 圆

84、周率?的双精度浮点表示。.I2.1 MATLAB程序设计语言基础192.1.2数据结构1.数值型数据强大方便的数值运算功能是MATLAB语言的最显著特色。 为保证较高的计算精度,MATLAB语言中最常用的数值量为双精度浮点数, 占8个字节 (64位) ,遵从IEEE记数法, 有11个指数位、53位尾数及一个符号位, 值域的近似范围为1.7 10308至1.7 10308, 其MATLAB表示为double()。 考虑到一些特殊的应用, 比如图像处理,MATLAB语言还引入了无符号的8位整型数据类型, 其MATLAB表示为uint8(), 其值域为0 255, 这样可以大大地节省MATLAB的存

85、储空间, 提高处理速度。 此外, 在MATLAB中还可以使用其他的数据类型, 如int8()、int16()、int32()、uint16()、uint32()等, 每一个类型后面的数字表示其位数, 其含义不难理解。2.符号型MATLAB还定义了 “符号” 型变量, 以区别于常规的数值型变量, 可以用于公式推导和数学问题的解析解法。 进行解析运算前需要首先将采用的变量申明为符号变量, 这需要用syms命令来实现。 该语句具体的用法为syms vars props, 其中,vars给出需要申明的变量列表, 可以同时申明多个变量, 中间用空格分隔, 而不是用逗号等分隔。 如果需要, 还可以进一步申

86、明变量的类型props, 可以使用的类型为real、positive等。 如果需要将a、b均定义为符号变量, 则可以用syms a b语句声明, 该命令还支持对符号变量具体形式的设定, 如syms a real。符号型数值可以通过变精度算法函数vpa()以任意指定的精度显示出来。 该函数的调用格式为vpa(A), 或vpa(A,n), 其中,A为需要显示的数值或矩阵,n为指定的有效数字位数, 前者以默认的十进制位数 (32位) 显示结果。例 2-1 自然对数底 e 的前 300 位有效数字可以由下面的语句直接显示出来。 vpa(exp(sym(1),300) 需要首先将1转换成符号量显示的结果

87、为 2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642742746639193200305992181741359662904357290033429526059563073813232862794349076323382988075319525101901157383418793070215408914993488416750924476146066808226480016847741185374234544243710753907774499

88、207。 若不指定位数则显示为 2.7182818284590452353602874713527。3.其他数据结构除了用于数学运算的数值数据结构外,MATLAB还支持下面的数据结构: 字符串型数据。MATLAB支持字符串变量, 可以用它来存储相关的信息。和C语言等程序设计语言不同,MATLAB字符串是用单引号括起来的。 多维数组。 三维数组是一般矩阵的直接拓展。 在控制系统的分析中也可以直接用于多变量系统的表示上。 在实际编程中还可以使用维数更高的数组。 单元数组。 单元数组是矩阵的直接扩展, 其存储格式类似于普通的矩阵, 而J.20第2章MATLAB语言程序设计基础矩阵的每个元素不是数值,

89、 可以认为能存储任意类型的信息, 这样每个元素称为“单元” (cell) , 例如,Ai,j可以表示单元数组A的第i行, 第j列的内容。 类与对象。MATLAB允许用户自己编写包含各种复杂信息的变量, 称为类, 而对象是类的一个实例。 类变量可以包含各种下级的信息, 还可以重新对类定义其计算, 这在控制系统描述中特别有用。 例如, 在MATLAB的控制系统工具箱中定义了传递函数类, 可以用一个变量来表示整个传递函数, 还重新定义了该类的运算, 如加法运算可以直接求取多个模块的并联连接, 乘法运算可以求取若干模块的串联。 这些内容将在后面的章节中详细介绍。2.1.3MATLAB 的基本语句结构M

90、ATLAB的语句有两种结构。1.直接赋值语句直接赋值语句的基本结构为赋值变量 = 赋值表达式, 这一过程把等号右边的表达式直接赋给左边的赋值变量, 并返回到MATLAB的工作空间。 如果赋值表达式后面没有分号, 则将在MATLAB命令窗口中显示表达式的运算结果。 若不想显示运算结果, 则应该在赋值语句的末尾加一个分号。 如果省略了赋值变量和等号,则表达式运算的结果将赋给保留变量ans。 所以说, 保留变量ans将永远存放最近一次无赋值变量语句的运算结果。例 2-2 矩阵的输入在 MATLAB 下是非常简单、 直观的, 考虑矩阵 A =123456780, 由下面的 MATLAB 语句将该矩阵直

91、接输入到工作空间中。 A=1,2,3; 4 5,6; 7,8 0 逗号、 空格分隔元素, 分号换行其中, 为 MATLAB 的提示符, 由机器自动给出, 用户在提示符下可以输入各种各样的 MATLAB 命令。 矩阵的内容由方括号括起来的部分表示, 在方括号中的分号表示矩阵的换行, 逗号或空格表示同一行矩阵元素间的分隔。 百分号 () 引导注释语句。 给出了上面的命令, 就可以在 MATLAB 的工作空间中建立一个 A 变量并在 MATLAB 命令窗口中显示出来。 在本书后续正文中为便于理解, 将采用数学形式显示得出的结果。如果不想显示中间结果, 则应该在语句末尾加一个分号, 如 A=1,2,3; 4 5,6; 7,8 0; 不显示结果, 但进行赋值A=A; 1 2 3, 1;2;3;4; 矩阵维数动态变化例 2-3 复数矩阵在 MATLAB 下也可以很直观地输入, 考虑下面的复数矩阵B =1 + 9j2 + 8j3 + 7j4 + 6j5 + 5j6 + 4j7 + 3j8 + 2j0 + j利用 MATLAB 语言定义的两个记号 i 和 j, 可以直接输入复数矩阵, 该复数矩阵可以由下面的语句直接输入

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号