计算机仿真技术与CAD:基于MATLAB的控制系统(第3版)(txt+pdf+epub+mobi电子书下载)

作者:李国勇

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

计算机仿真技术与CAD:基于MATLAB的控制系统(第3版)

计算机仿真技术与CAD:基于MATLAB的控制系统(第3版)试读:

第3版前言

本书自2003年9月初版和2008年1月再版以来,深得广大读者的关心和支持,先后重印10多次,被国内多所大学选做教材。并入选普通高等教育“十一五”国家级教材规划。

这次修订在保持本书内容系统、实用、易读的特点,以及框架结构基本不变的基础上,充分考虑能适应新形式下计算机仿真技术类课程教学和适用于不同层次院校的需要,体现宽口径专业教育思想,反映先进的技术水平,强调教学实践的重要性,有利于学生自主学习和动手实践能力的培养,适应卓越工程师人才培养的要求。

本书具有如下特点:(1)内容先进、符合规范

本书既考虑内容的先进性,又兼顾教材内容的稳定性。根据教育部高等学校自动化及其它电气信息类专业的专业规范和目前最新版本MATLAB7.x为基础来进行叙述。但同时排除了过渡性很强的内容使得本书的内容对更高版本的环境仍可完全适用。(2)内容全面、结构合理

全书结构贯穿一条主线,以MATLAB/Simulink为平台,从系统建模、系统仿真,到系统分析和系统设计,将MATLAB/Simulink应用技术与控制理论有机地结合起来。本书内容涉及面广,几乎包括了计算机仿真、控制系统计算机辅助分析与设计、MATLAB和Simulink的所有基本内容和使用方法,但各部分内容力求精而简。各章均配有适当的例题和习题,并提供了相应的用MATLAB编写的仿真程序。(3)便于教学、方便用户

本书既考虑了课堂教学使用,又兼顾了查阅功能。本书在叙述MATLAB通用功能时,对内容是精心挑选的,但在书后的索引中罗列了通用功能的几乎全部指令,以备读者查阅需要。面对MATLAB 7.x和MATLAB 6.x部分功能的较大变化,本书第3版仍然馔写了MATLAB 7.5和MATLAB 6.5两个不同经典版本的内容,以满足不同读者的需求。因为随着MATLAB的迅速变化,尽管目前最新版本MATLAB 7.13(R2011b)与版本MATLAB 7.5(R2007b)相比,其内容急剧扩充,但就其本教材所涉及的内容而言,它们并无本质性变化。另外,最新版本安装程序大,且运行速度慢,尤其是启动初始化时特慢。由于MATLAB6.5占用空间小,启动速度快,运行时间短,且功能已满足一般使用者和教学大纲的要求,故它仍为当前较为流行的教学版本。

本教材适用学时数为32~48(2~3学分),各章节编排具有相对的独立性,便于教师和学生取舍,便于不同层次院校的不同专业选用。

本书由李国勇主编,程永强副主编。全书共11章,第0章由韩念琛编写;第1章由杨丽娟编写;第2章和第3章由郑晋平编写;第4章由郭咏梅编写;第5章由郭红戈编写;第6章、第8章和第9章由李国勇编写;第7章由韩晓霞编写;第10章由彭宏丽编写;附录A由赵山川编写;附录B由赵润章编写;其余部分由刘笑达编写。全书由李国勇和程永强整理定稿。

本书可作为高等院校自动化专业和电气信息类其他各专业本科生和研究生教材。鉴于本书的通用性和实用性教强,故也可作为从事自动控制及相关专业的教学、研究、设计人员和工程技术人员的参考用书。

由于作者水平有限,书中仍难免有遗漏与不当之处,故恳请有关专家、同行和广大读者批评指正。

编 者

第0章 绪论

0.1 仿真技术简介

仿真技术是一门利用物理模型或数学模型模拟实际环境进行科学实验的技术,它具有经济、可靠、实用、安全、灵活和可多次重复使用的优点,目前已被广泛地应用于几乎所有的科学技术领域,成为分析、综合各种复杂系统的一种强有力的工具和手段。

在工业自动化领域,控制系统的分析、设计和系统调试、改造,大量应用仿真技术。例如,在设计前期,利用仿真技术论证方案,进行经济技术比较,优选合理方案;在设计阶段,仿真技术可帮助设计人员优选系统合理结构,优化系统参数,以期获得系统最优品质和性能;在调试阶段,利用仿真技术分析系统响应与参数关系,指导调试工作,可以迅速完成调试任务;在运行阶段,利用仿真技术可以在不影响生产的条件下分析系统的工作状态,预防事故发生,寻求改进薄弱环节,以提高系统的性能和运行效率。

对于比较简单的被控对象,可以直接在实际系统上进行实验和调整来获得较好的整定参数。但是在实际生产过程中,大部分的被控对象是比较复杂的,并且要考虑安全性、经济性以及进行实验研究的可能性等,这在现场实验中往往不易做到,甚至根本不允许这样做。例如研究导弹飞行、宇航、反应堆控制等系统时,不经模拟仿真实验就进行直接实验,将对人类的生命和健康带来很大的危险,这时,就需要利用实际系统的物理模型或数学模型进行研究,然后把对模型实验研究的结果应用到实际系统中去,这种方法就叫做模拟仿真研究,简称仿真。因此,仿真就是用模型(物理模型或数学模型)代替实际系统进行实验和研究。仿真所遵循的基本原则是相似原理,即几何相似、环境相似和性能相似。

依据相似原理,仿真可分为物理仿真、数学仿真和混合仿真。物理仿真就是应用几何相似原理,制作一个与实际系统相似但几何尺寸较小或较大的物理模型(例如飞机模型放在气流场相似的风洞中)进行实验研究。数学仿真是应用数学相似原理,构成数学模型在计算机上进行研究。它由软硬件仿真环境、动画、图形显示、输出打印设备等组成。在仿真研究中,数学仿真只要有一台数学仿真设备(如计算机等),就可以对不同的控制系统进行仿真实验和研究,而且,进行一次仿真实验研究的准备工作也比较简单,主要是被控系统的建模、控制方式的确立和计算机编程。而物理仿真则需要进行大量的设备制造、安装、接线及调试工作,其投资大、周期长、灵活性差、改变参数困难、模型难以重用,且实验数据处理也不方便。数学仿真实验所需的时间比物理仿真大大缩短,实验数据的处理也比物理仿真简单的多。但由于物理仿真具有信号连续、运算速度快、直观形象、可信度高等特点,故至今仍然广泛使用。混合仿真又称数学物理仿真,它是为了提高仿真的可信度或者针对一些难以建模的实体,在系统研究中往往把数学仿真、物理仿真和实体结合起来组成一个复杂的仿真系统,这种在仿真环节中有部分实物介入的混合仿真也称为半实物仿真或者半物理仿真。

由于数学仿真的主要工具是计算机,因此一般又称为“计算机仿真”。计算机仿真根据被研究系统的特征可分为两大类:连续系统仿真和离散事件系统仿真。前者可对系统建立用微分方程或差分方程等描述的数学模型,并将其放在计算机上进行试验;后者面对的是由某种随机事件驱动引发状态变化的系统的数学模型(非数学方程式描述,通常用流程图或网络图描述),并将它放在计算机上进行试验。本书主要讨论非离散事件系统的计算机仿真。

计算机仿真能够为许多实验提供方便、灵活的“活的数学模型”,因此,凡是可以用模型进行实验的,几乎都可以用计算机仿真来研究被仿真系统本身的各种特性,选择最佳参数和设计最合理的系统方案。所以随着计算机技术的发展,计算机仿真越来越广泛地得到应用。计算机仿真过程流程图如图0-1所示。图0-1 计算机仿真流程图

由图0-1可对计算机仿真的一般过程描述如下。(1)根据仿真目的确定仿真方案

根据仿真目的确定相应的仿真结构和方法,规定仿真的边界条件与约束条件。(2)建立系统的数学模型

对于简单的系统,可以通过某些基本定律来建立数学模型。而对于复杂的系统,则必须利用实验方法通过系统辨识技术来建立数学模型。数学模型是系统仿真的依据,所以数学模型的准确性十分重要。(3)建立仿真模型

就连续系统而言,就是通过一定算法对原系统的数学模型进行离散化处理,即建立相应的差分方程。(4)编写仿真程序

对于非实时仿真,可用一般高级语言或仿真语言。对于快速的实时仿真,往往需要用汇编语言。(5)进行仿真实验

设定实验环境、条件,进行实验,并记录仿真数据。(6)仿真结果分析

根据实验要求和仿真目的对仿真结果进行分析处理,以便修正数学模型、仿真模型及仿真程序,或者修正/改变原型系统,以进行新的实验。模型是否能够正确地表示实际系统,并不是一次完成的,而是需要比较模型和实际系统的差异,通过不断地修正和验证而完成的。

通常,将实际系统抽象为数学模型,称之为一次模型化,它涉及系统辨识技术问题,又称为建模问题。将数学模型转化为可以在计算机上运行的仿真模型,称之为二次模型化,它涉及仿真编程、运行、修改参数等技术,又称为系统仿真技术。

0.2 计算机仿真技术的发展概况

1.硬件发展

计算机仿真技术的发展,就硬件而言,大致经历了以下几个阶段。

20世纪40年代出现了模拟计算机,这时的计算机大都是用来设计飞机的专用计算机。20世纪50年代初,出现了通用的模拟计算机。20世纪50年代末,数字计算机有了很大发展,加上这一时期在微分方程数值解的理论方面又有很大的发展,所以在几种高级语言(如FORTRAN,ALGOL等)出现以后,在20世纪50年代末期,数字计算机便在非实时仿真方面开始得到广泛的应用。1958年为满足高速动态系统仿真的要求,出现了第1台专用的模拟/数字混合计算机,用来解决导弹轨迹的计算问题。20世纪60年代初期,出现了混合计算机商品。

近年以来,由于计算机技术的飞速发展,数字计算机已有可能解决高速动态系统的实时仿真问题,所以模拟/数字混合计算机将被数字计算机所取代。

2.软件发展

在计算机硬件飞速发展的同时,仿真软件也有很大的发展。近几十年来,仿真软件充分吸收了仿真方法学、计算机、网络、图形/图像、多媒体、软件工程、系统工程、自动控制、人工智能等技术成果,从而得到了很大发展。仿真软件也从初期的机器代码,历经较高级的编程语言、面向问题描述的仿真语言,发展到模块化概念,并进而发展到面向对象编程、图形化模块编程等。人机环境也由初期的图形支持,到动画、交互式仿真,进一步发展到矢量的图形支持,并向虚拟现实发展。仿真软件的发展基本经历了以下5个阶段。(1)通用程序设计语言

1960年左右的FORTRAN,以及具有适应并行处理功能的Ada,C++等语言。(2)初级仿真语言阶段

1960—1970年面向框图的MIDAS;面向大型连续系统的仿真规范的CSSL(Continuous System Simulation Language);CSMP(Continuous System Modeling Program);基于差分方程模型的DYNAMO(Dynamic Models);基于离散事件的SIMLIB 和CSL(Control and Simulation Language);还有以过程为基础的通用仿真系统GPSS(General purpose Simulation System)等。(3)高级仿真语言阶段

1970—1980年商用的连续系统仿真语言SSLIV,DAREP,ACSL,以及离散事件系统仿真语言GPSSIV,SIMCRIPⅢ和SLAM等。(4)一体化建模与仿真环境软件

如美国Pritsket于1989年推出的TESS,它是具有数据库,而且能将数据存储与检索,脚本仿真/数据采集,数据分析报告和图形生成,脚本动画,网络模型输入,运行控制,数据管理八个部分组成一体化仿真软件环境。(5)智能化仿真软件环境

它于20世纪80年代后期问世,由一体化仿真软件环境、专家系统、智能接口等组成,并具有知识库、模型库、方法库、实验程序库和数据库,该软件充分利用了FORTRAN,C,Ada,LISP等语言的优良特性。

到目前为止,已形成了许多各具特色的仿真语言。其中美国MathWorks软件公司的动态仿真集成软件Simulink与该公司著名的MATLAB软件集成在一起,成为当今最具影响力的控制系统应用软件。

0.3 计算机仿真技术的应用

计算机仿真技术的应用范围十分广泛。它不仅被应用于工程系统,如控制系统的设计、分析和研究,电力系统的可靠性研究,化工流程的模拟,造船、飞机、导弹等研制过程;而且还被应用于非工程系统,如用于研究社会经济、人口、污染、生物、医学系统等。仿真技术具有很高的科学研究价值和巨大的经济效益。由于其应用广泛及卓有成效,在国际上成立国际仿真联合会(International Association for Mathematic and Computer in Simulation,IAMCS)。我国也于1989年成立了系统仿真学会。国内外高等学校的工科专业普遍开设了计算机仿真类课程,我国高等学校自动化学科更是在2006年的教学大纲中,将计算机仿真类课程列为自动化专业的一门必修课程。

计算机仿真在系统研究中的重要性在于它不仅经济而且安全可靠。首先,由于仿真技术在应用上的安全性,使得航空、航天、核电站等成为仿真技术最早的和最主要的应用领域。特别是在军事领域,新型的武器系统、大型的航空航天飞行器在其设计、定型过程中,都要依靠仿真试验进行修改和完善。导弹、火箭的设计研制,空战、电子战、攻防对抗等演练也都离不开仿真技术。其次,从仿真的经济性考虑,由于仿真往往是在计算机上模拟现实系统过程,并可多次重复运行,使得其经济性十分突出。据美国对“爱国者”等三个型号导弹的定型试验统计,采用仿真试验可减少实弹发射试验次数约 43%,节省费用达数亿美元。我国某种型号导弹在设计和定型过程中,通过仿真试验就缩短研制时间近两年。我国电力系统应用火电厂单元机组模型仿真装置培训值班长和运行人员,大大缩短了岗前培训时间并提高了人员的专业素质。采用模拟装置培训工作人员,经济效益和社会效益也十分明显。另外,从环境保护的角度考虑,仿真技术也极具价值。例如,现代核试验多数在计算机上进行仿真,固然是由于计算机技术的发展使其得以在计算机上模拟,但政治因素和环境因素才是进行核试验仿真的主要原因。通过仿真研究还可以预测系统的特性,以及外界干扰的影响,从而可以对制订控制方案和控制决策提供定量依据。

仿真技术在许多复杂工程系统的分析和设计研究中越来越成为不可缺少的工具。系统的复杂性主要体现在复杂的环境、复杂的对象和复杂的任务上。然而只要能够正确地建立系统的模型,就能够对该系统进行充分的分析研究。另外,仿真系统一旦建立就可重复利用,特别是对计算机仿真系统的修改非常方便。经过不断的仿真修正,逐渐深化对系统的认识,以采取相应的控制和决策,使系统处于科学的控制和管理之下。

近年来,由于问题域的扩展和仿真支持技术的发展,出现了一批新的研究热点:(1)面向对象的仿真方法,从人类认识世界的模式出发提供更自然直观的系统仿真框架;(2)分布式交互仿真通过计算机网络实现交互操作,构造时空一致合成的仿真环境,可对复杂、分布、综合的系统进行实时仿真;(3)定性仿真以非数字手段处理信息输入、建模、结果输出,建立定性模型;(4)人机和谐的仿真环境,发展可视化仿真、多媒体仿真和虚拟现实等。这些新技术、新方法必将孕育着仿真方法的新突破。

当前仿真研究的前沿课题主要有仿真与人工智能技术结合,以实现智能化的仿真系统、分布式仿真与仿真模型的并行处理、图形与动画仿真、面向用户、面向问题、面向实验的建模与仿真环境以及仿真支持系统等。

仿真是以相似性原理、控制论、信息技术及相关知识为基础,以计算机为工具,借助系统模型对真实系统进行实验研究的一门综合性技术。它涉及相似论、控制论、计算机科学、系统工程理论、数值计算、概率论、数理统计、时间序列分析等多种学科。就控制系统的仿真而言,它是一门涉及控制理论、计算数学和计算机技术的综合性科学。

0.4 控制系统计算机辅助设计的主要内容及其应用

计算机辅助设计(Computer Aided Design,CAD)技术是随着计算机技术的发展应运而生的一门应用型新技术,它涉及数字仿真、计算方法、显示与绘图及计算机等诸多内容,至今已有近40年的历史。CAD技术是在仿真技术的基础上发展起来的,最早使用的CAD软件包大部分是数字仿真软件包的推广。

1.控制系统CAD的主要内容

控制系统CAD作为CAD技术在自动控制理论及自动控制系统分析与设计方面的应用分支,是本门课程的另一个重要内容。CAD技术为控制系统的分析与设计开辟了广阔天地,它使得原来被人们认为难以应用的设计方法成为可能。根据所使用的数学工具,控制系统的分析与设计方法可以分为如下的两大类。(1)变换法(频域法)

变换法属经典控制理论范畴,主要适用于单输入单输出系统。变换法借助于传递函数,利用代数的方法(如Routh判据)判断系统的稳定性,并根据系统的根轨迹、Bode图和Nyquist图等概念与方法来进一步分析控制系统的稳定性和动静态特性。也可在此基础上,根据对系统品质指标的要求,选定一种校正装置的结构形式,利用参数优化的方法确定系统校正装置的参数。(2)状态空间法(时域法)

状态空间法为现代控制理论内容,适用于多变量控制系统的分析与设计。利用状态空间法设计控制系统的方法主要有两种。一种是最优设计方法,它包括最优控制规律的设计及状态的最优估计两个方面。另一种是基于对闭环系统的极点配置。

利用状态空间法对控制系统进行分析和设计的主要内容有:① 系统的稳定性、能控性和能观测性的判断;② 能控及能观测子系统的分解;③ 状态反馈与状态观测器的设计;④ 闭环系统的极点配置;⑤ 线性二次型最优控制规律与卡尔曼滤波器的设计。

2.控制系统CAD的应用(1)控制系统CAD可以广泛地应用于工业生产部门。利用它来帮助设计实际的控制系统,不仅可以缩短设计周期,而且能够设计出性能较好的控制系统。从而有助于改进产品质量和提高劳动生产率。(2)控制系统CAD对于从事自动控制的研究人员来说也是必不可少的工具和手段。借助于CAD程序,研究人员可以很方便地对控制系统进行不同方法的分析和研究。从而不仅可以验证控制系统理论,而且可以进一步完善并发展控制系统的设计方法。(3)控制系统CAD在控制系统教学中的应用也是十分明显的,借助于控制系统CAD程序,可以加深学生对控制系统理论的学习和理解。同时由于减少了许多繁杂的手工计算,从而可以提高学习效率。过去在课堂学习中只能举一些低阶系统和简单参数的例子,以便于手工能够计算。今天借助于计算机,更为接近实际的高阶系统也可作为学生的练习内容。从而使他们能得到更多的实际训练,较早地获得实际控制系统设计的经验。

为使控制系统CAD程序的使用更加方便和灵活,并进一步促进它的应用,很多国家都有计算机辅助设计控制系统的软件包。这些软件包不仅包括了控制系统的各方面的应用程序,而且通过软件包的管理程序,可以对所有程序和数据进行统一管理,并提供人机交互的功能。比较著名的软件包有:美国的CSMP/360、加拿大的GEMCOPE、英国的UMIST、罗马尼亚的SPIAC、日本的DPACS-P和美国的MATLAB等。

0.5 基于MATLAB的控制系统仿真的现状

作为一种面向科学与工程计算的高级语言,MATLAB由于使用极其方便、而且提供丰富的矩阵处理功能,所以很快引起控制理论领域研究人员的高度重视,并在此基础上开发了控制理论与CAD和图形化模块化设计方法相结合的控制系统仿真工具箱,目前它已成为国际控制界最流行的计算机仿真与CAD语言。

MATLAB可以在各种类型的机型上运行,如PC及兼容机、Macintosh及Sun工作站、VAX机、Apollo工作站、HP工作站、DECstation工作站、SGI工作站、RS/6000工作站、Convex工作站及Cray计算机等。使用MATLAB语言进行编程,可以不做任何修改直接移植到这些机器上运行,它与机器类型无关。这大大拓宽了MATLAB语言的应用范围。

MATLAB语言除可以进行传统的交互式编程来设计控制系统以外,还可以调用它的控制系统工具箱来设计控制系统。许多使用者还结合自己的研究领域将擅长的CAD方法与MATLAB结合起来,制作了大量的控制系统工具箱,如控制系统工具箱、系统辨识工具箱、鲁棒控制工具箱、模型预测控制工具箱、神经网络工具箱、优化工具箱、模糊逻辑工具箱和遗传算法与直接搜索工具箱等。可以说伴随着控制理论的不断发展和完善,MATLAB的工具箱也在不断地增加和完善。MATLAB的Simulink和Stateflow功能的增加使控制系统的设计更加简便和轻松,而且可以设计更为复杂的控制系统。用MATLAB设计出控制系统进行仿真后,可以利用MATLAB的工具在线生成C语言代码,用于实时控制。可以毫不夸张地说,MATLAB已不仅是一般的编程工具,而是作为一种控制系统的设计平台出现的。目前,许多工业控制软件的设计就明确提出了与MATLAB的兼容性。

MATLAB及其工具箱将一个优秀软件包的易用性、可靠性、通用性和专业性,以及以一般目的应用和高深的专业应用完美地集成在一起,并凭借其强大的功能,先进的技术和广泛的应用,使其逐渐成为国际性的计算标准,为世界各地数十万名科学家和工程师所采用。今天,MATLAB的用户团体几乎遍及世界各大学、公司和政府研究部门,其应用也已遍及现代科学和技术的方方面面。

下面是MATLAB的几个典型应用,由此可见一斑。

瑞典Lunds大学反射物理学研究所在一项为期3个月的极地探险计划中广泛使用MATLAB及其工具箱,在北冰洋研究放射性物质对环境生态学的影响。研究人员主要用MATLAB进行数据分析,用神经网络工具箱辨识北冰洋流木的年轮图案,并据此识别这些漂流数年的树木成长自何方。

Forsmark核电站使用MATLAB优化反应堆的功率输出。工程师们从堆芯读取大量数据,算出燃料棒和控制棒的最佳位置,以便产生最大的输出功率。这是一个极为庞大且十分复杂的数值分析问题,包括分析17 000个以上的节点。为了简化计算过程,Forsmark用MATLAB开发出他们自己的图形用户界面,这个图形用户界面容许没有任何使用经验的使用者执行计算和评价分析结果。Forsmark还使用MATLAB建模和分析各种设想的失效及扰动情况。在反应堆中当发生扰动时,数据必须被详细分析,以便确定扰动的原因。借助于MATLAB和它的系统辨识及控制工具箱,Forsmark的工程师们将分析时间从原来的1周减少到现在的15min。

Calspan先进技术中心试验高度可修改的实验型飞行器,它可以成倍地提高其他飞行器的性能。其仿真程序运行在一组并行操作的浮点DSP上,所用硬件来自DSPACE。飞行器和飞行控制系统首先在地面用Simulink模块建模、仿真,然后用实时Workshop生成C源代码并被下载到飞行器的DSP上。当实验飞机飞行时,试飞员可以在飞机预先编好的程序DSP模块控制时评价飞行器和飞行控制系统,飞行中各种控制参数可以直接被调整并被下载给硬件做试验,这种形式的实时试验节省大量时间和经费,一个飞行控制系统在其原型被建立之前就可以完成几乎全部试验。

习题

0-1 什么是仿真?它所遵循的的基本原则是什么?

0-2 仿真的分类有几种?为什么?

0-3 比较物理仿真和数学仿真的优缺点。

0-4 简述计算机仿真的过程。

0-5 什么是CAD技术?控制系统CAD可解决哪些问题?

第1章 仿真软件——MATLAB

1.1 MATLAB的功能特点

1.MATLAB简介

在科学研究和工程应用中,为了克服一般语言对大量的数学运算,尤其当涉及矩阵运算时,编程难、调试麻烦等困难,美国MathWorks公司于1967年构思并开发了“Matrix Laboratory”(缩写MATLAB,即矩阵实验室)软件包;经过不断更新和扩充,该公司于1984年推出了MATLAB的正式版;特别是1992年推出了具有划时代意义的MATLAB4.0版,并于1993年推出了其微机版,以配合当时日益流行的Microsoft Windows一起使用。到2011年为止先后推出了MATLAB4.x、MATLAB 5.x、MATLAB 6.x和MATLAB 7.x版,使之应用范围越来越广。从MATLAB 7.x版开始,MathWorks公司每年发布两个版本的MATLAB。

用MATLAB编程运算与人进行科学计算的思路和表达方式完全一致,所以使用MATLAB进行数学运算就像在草稿纸上演算数学题一样方便。因此,在某种意义上说,MATLAB既像一种万能的、科学的数学运算“演算纸”,又像一种万能的计算器一样方便快捷。MATLAB大大降低了对使用者的数学基础和计算机语言知识的要求,即使用户不懂C或FORTRAN这样的程序设计语言,也可使用MATLAB轻易地再现C或FORTRAN语言几乎全部的功能,从而设计出功能强大、界面优美、稳定可靠的高质量程序来,而且编程效率和计算效率极高。

尽管MATLAB开始并不是为控制理论与系统的设计者们编写的,但以它“语言”化的数值计算、强大的矩阵处理及绘图功能、灵活的可扩充性和产业化的开发思路很快就为自动控制界研究人员所瞩目。目前,在自动控制、图像处理、语言处理、信号分析、振动理论、优化设计、时序分析和系统建模等领域,由著名专家学者以MATLAB为基础开发的实用工具箱极大地丰富了MATLAB的内容。

较为常见的MATLAB工具箱主要有:(1)航空宇宙模块集(Aerospace Blockset);(2)通信模块集(Communications Blockset);(3)控制系统工具箱(Control System Toolbox);(4)数据获得工具箱(Data Acquisition Toolbox);(5)模糊逻辑工具箱(Fuzzy Logic Toolbox);(6)滤波器设计工具箱(Filter Design Toolbox);(7)定点运算模块集(Fixed-Point Blockset);(8)遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox);(9)高阶谱分析工具箱(High-Order Spectral Analysis Toolbox);(10)图像处理工具箱(Image Processing Toolbox);(11)映射工具箱(Mapping Toolbox);(12)模型预测控制工具箱(Model Predictive Control Toolbox);(13)神经网络工具箱(Neural Network Toolbox);(14)优化工具箱(Optimization Toolbox);(15)偏微分方程工具箱(Partial Differential Equation Toolbox);(16)鲁棒控制工具箱(Robust Control Toolbox);(17)信号处理工具箱(Signal Processing Toolbox);(18)统计学工具箱(Statistics Toolbox);(19)系统辨识工具箱(System Identification Toolbox);(20)样条工具箱(Spline Toolbox);(21)小波分析工具箱(Wavelet Toolbox)。

模型输入与仿真环境Simulink更使MATLAB为控制系统的仿真与CAD中的应用打开了崭新的局面,并使MATLAB成为目前国际上最流行的控制系统计算机辅助设计的软件工具。MATLAB不仅流行于控制界,在生物医学工程、语言处理、图像信号处理、雷达工程、信号分析、计算机技术等各行各业中都有极广泛的应用。

目前MATLAB的最新版本为MATLAB 7.13(R2011b),它包括MATLAB® 和 Simulink®的新功能和新产品,以及其他产品的更新和缺陷修复程序。由于最新版的新增功能对于本书涉及的内容没有太大影响,再加上新版本安装程序大、启动和运行速度慢,故本书仍以目前最为流行的经典版本MATLAB 7.5(R2007b)为基础来进行叙述,但排除了过渡性很强的内容,使得本书的内容对更高版本的环境仍可完全适用,同时也兼顾了当前仍在较低配置计算机上使用MATLAB 6.5版本的用户。

注意,对于使用Windows XP系统的用户需要安装MATLAB 6.5及以上的版本,使用Windows 7系统的用户必须安装MATLAB 7.6(R2008a)及以上的版本,否则不能正常使用或安装MATLAB。

2.MATLAB操作界面

MATLAB启动后将出现如图1-1所示的操作界面。

由图1-1可知,MATLAB的操作界面由工作窗口、开始按钮功能菜单和工具栏等组成。(1)MATLAB的工作窗口

在默认状态下,MATLAB的工作窗口由以下一些窗口组成。

① 命令窗口(Command Window)

MATLAB的命令窗口位于MATLAB操作界面的右方,它是MATLAB的主要操作窗口,MATLAB的大部分命令和结果都需要在此窗口中进行操作和显示。

MATLAB命令窗口中的“>>”标志为MATLAB的命令提示符,“|”标志为输入字符提示符。命令窗口中最上面的提示行是显示有关MATLAB的信息介绍和帮助等命令的。如果用户是第一次使用MATLAB,则建议首先在命令提示符后键入demo命令,它将启动MATLAB的演示程序,用户可以在这些演示程序中领略到MATLAB所提供的强大的运算和绘图功能。

② 历史命令(Command History)窗口

在默认状态下,该命令窗口出现在MATLAB操作界面的左下方。这个窗口记录用户已经操作过的各种命令,用户可以对这些历史信息进行编辑、复制和剪切等操作。图1-1 MATLAB操作界面

③ 当前工作目录(Current Directory)窗口

在默认状态下,该窗口出现在MATLAB操作界面的左上方的前台。在这个窗口中,用户可以设置MATLAB的当前工作目录,并展示目录中的M文件等。同时,用户可以对这些M文件进行编辑等操作。

④ 工作空间(Workspace)浏览器窗口

在默认状态下,该窗口出现在MATLAB操作界面的左上方的后台。在这个窗口中,用户可以查看工作空间中所有变量的类别、名称和大小。用户可以在这个窗口中观察、编辑和提取这些变量。(2)开始按钮

开始按钮(Start)位于MATLAB操作界面的左下角,单击这个按钮后,会出现MATLAB的操作菜单。这个菜单上半部分的选项包含MATLAB的各种交互操作界面,下半部分的选项的主要功能是窗口设置、访问MATLAB公司的网页和查看帮助文件等。(3)功能菜单

为了更好地利用MATLAB,在其操作界面中设置了以下多个功能菜单。

● File——文件操作菜单

New 新建M文件、图形、模型和图形用户界面

Open 打开.m,.fig,.mat,.mdl,.cdr等文件

Close Command Window 关闭命令窗口

Import Data 从其他文件导入数据

Save Workspace As保存工作空间数据到相应的路径文件窗口中

Set Path 设置工作路径

Preferences 设置命令窗口的属性

Page Setup 页面设置

Print设置打印机属性

Print Selection 选择打印

Exit MATLAB 退出MATLAB操作界面

● Edit——编辑菜单

Undo 撤销上一步操作

Redo 重新执行上一步操作

Cut 剪切

Copy 复制

Paste 粘贴

Paste to Workspace…粘贴到工作空间

Select All 全部选定

Delete 删除所选对象

Find 查找所需对象

Find Files 查找所需文件

Clear Command Window 清除命令窗口的内容

Clear Command History 清除历史窗口的内容

Clear Workspace 清除工作区的内容

● Debug——调试菜单

Open M-Files when Debugging 调试时打开M文件

Step 单步调试

Step In 单步调试进入子函数

Step Out 单步调试跳出子函数

Continue 连续执行到下一断点

Clear Breakpoints in All Files 清除所有文件中的断点

Stop if Errors/Warnings 出错或报警时停止运行

Exit Debug Mode 退出调试模式

● Desktop——桌面菜单

Unlock Command Window命令窗口设为当前全屏活动窗口

Desktop Layout 桌面设计

Save Layout 保存桌面设计

Organize Layouts 组织桌面设计

Command Window 显示命令窗口

Command History 显示历史窗口

Current Directory显示当前工作目录

Workspace显示工作空间

Help 帮助窗口

Profiler 轮廓图窗口

Editor 编辑器

Figures 图形编辑器

Web Brower Web浏览器

Array Editor 矩阵编辑器

File Comparisons 文件比较

Toolbar 显示/隐藏工具栏

Shortcuts Toolbar显示/隐藏快捷工具栏

Titles 显示/隐藏标题

● Window——窗口菜单

Close All Documents 关闭所有文档

Command Window 选定命令窗口为当前活动窗口

Command History 选定历史窗口为当前活动窗口

Current Directory 选定当前工作目录为当前活动窗口

Workspace 选定工作空间为当前活动窗口(4)工具栏

MATLAB操作界面工具栏中的按钮“”分别用来快捷建立M文件编辑窗口和打开编辑文件窗口;按钮“”对应的功能与Windows操作系统类似;按钮“”分别用来快捷启动Simulink库浏览窗口、GUIDE模板窗口和轮廓图窗口;按钮“”分别用来快捷设置当前目录和返回到当前目录的父目录。

1.2 MATLAB的基本操作

1.语言结构

MATLAB命令窗口就是 MATLAB语言的工作空间,因为MATLAB的各种功能的执行必须在此窗口下才能实现。所谓窗口命令,就是在上述命令窗口中输入的MATLAB语句,并直接执行它们完成相应的运算、绘图等。

MATLAB语句的一般形式为

变量名=表达式

其中,等号右边的表达式可由操作符或其他字符、函数和变量名组成,它可以是MATLAB允许的数学或矩阵运算,也可以包含MATLAB下的函数调用;等号左边的变量名为MATLAB语句右边表达式的返回值语句所赋值的变量的名字。在调用函数时,MATLAB允许一次返回多个结果,这时等号左边的变量名需用[]括起来,且各个变量名之间用逗号分隔开;等号和左边的变量名可以缺省,此时返回值自动赋给ans。

MATLAB中使用的算术运算符如表1-1所示。对于矩阵来说,这里左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于标量,两种除法运算的结果相同,如1/4和4\1有相同的值0.25。常用的十进制数符号如小数点、负号等,在MATLAB中也可以同样使用,表示10的幂次要用符号e或E,如3,-99,0.0001,1.6e-20,6.2e23。

在MATLAB中变量名必须以字母开头,之后可以是任意字母、数字或者下划线(不能超过19个字符),但变量中不能含有标点符号。变量名区分字母的大小写,同一名字的大写与小写被视为两个不同的变量。一般来说,在MATLAB下变量名可以为任意字符串,但MATLAB保留了一些特殊的字符串如表1-2所示。表1-1 MATLAB中的算术运算符表1-2 MATLAB中的特殊变量

MATLAB命令语句能即时执行,它不是输入完全部MATLAB命令语句并经过编译、连接形成可执行文件后才开始执行,而是每输入完一条命令,MATLAB就立即对其处理,并得出中间结果,完成了MATLAB所有命令语句的输入,也就完成了它的执行,直接便可得到最终结果。从这一点来说,MATLAB清晰地体现了类似“演算纸”的功能。例如,在MATLAB的命令窗口中直接输入以下命令:

其中第3、4条命令的执行结果分别显示如下

注意,以上各命令行中的“>>”标志为MATLAB的命令提示符,其后的内容才是用户输入的信息。每行命令输入完后,只有当用回车键进行确定后,命令才会被执行。以下命令同。

MATLAB语句既可由分号结束,也可由逗号或换行号结束,但它们的含义是不同的。如果用分号“;”结束,则说明除了这一条命令外还有下一条命令等待输入,MATLAB这时将不立即显示运行的中间结果,而等待下一条命令的输入,如上面例子的前两条命令;如果以逗号“,”或回车结束,则将把左边返回的内容全部显示出来,如上面例子的后两条命令。当然在任何时候也可输入相应的变量名来查看其内容。例如:

结果显示:

在MATLAB中,几条语句也可出现在同一行中,只要用分号或逗号将它们分割开来。例如:

这时可得与上面相同的结果。

MATLAB工作空间中的变量在退出MATLAB时会丢失。如果在退出MATLAB前想将工作空间中的变量保存到文件中,则可以调用save命令来完成,该命令的调用格式为

save 文件名 变量列表 其他选项

注意,这一命令中不能使用逗号,不同的元素之间只能用空格来分隔。例如,想把工作空间中的a,b,c变量存到mydat.mat文件中去,则可用下面的命令来实现:

这里将自动地使用文件扩展名“.mat”。如果想将整个工作空间中所有的变量全部存入该文件,则应采用下面的命令:

当然这里的mydat也可省略,这时将工作空间中的所有变量自动地存入到文件matlab.mat中了。应该指出的是,这样存储的文件均是按照二进制数的形式进行的,所以得出的文件往往是不可读的。如果想按照ASCII码的格式来存储数据,则可以在命令后面加上一个控制参数:-ascii,该选项将变量以单精度的ASCII码形式存入文件中去;如果想获得高精度的数据,则可使用控制参数:-ascii-double。

MATLAB提供的load命令可以从文件中把变量调出并重新装入到MATLAB的工作空间中去,该函数的调用格式与save命令相同。

当然工作空间中变量的保存和调出也可利用菜单项中的File→Save Workspace As...和File→Open命令来完成。

如果想查看目前的工作空间中都有哪些变量名,则可以使用who命令来完成。例如,当MATLAB的工作空间中有a,b,c,d四个变量名时,使用who 命令将得出如下的结果:

想进一步了解这些变量的具体细节,则可以使用whos命令来查看。

了解了当前工作空间中的现有变量名之后,则可以使用clear命令来删除其中一些不再使用的变量名,这样可使得整个工作空间更简洁,节省一部分内存。例如,想删除工作空间中的a,b两个变量,则可以使用下面的命令:

如果想删除整个工作空间中所有的变量,则可以使用以下命令:

在MATLAB命令窗口中,利用上下方向键可以回调已输入的命令,向上和向下方向键“↑”和“↓”分别用于回调上一行和下一行命令。回调后的命令也可进行编辑等操作。

但仅靠一条一条地输入语句,MATLAB难以实现复杂功能,为了实现诸如循环、条件、分支等功能,MATLAB利用了M文件,M文件由一系列的MATLAB语句组成。

MATLAB实际上可以认为是一种解释性语言,用户可以在MATLAB工作环境下一条一条地键入命令,也可以直接键入用MATLAB语言编写的M文件名,或将它们结合起来使用。这样MATLAB软件对此命令或M文件中各条命令进行翻译,然后在MATLAB环境下对它进行处理,最后返回运算结果。所以说MATLAB语言的结构可用下式进行描述:

MATLAB语言=窗口命令+M文件

2.磁盘文件

因为MATLAB本身可以被认为是一种高效的语言,所以用它可编写出具有特殊意义的磁盘文件来。这些磁盘文件由一系列的MATLAB语句组成,它既可能是由一系列窗口命令语句构成的文本文件(简称为MATLAB的程序),又可以是由各种控制语句和说明语句构成的函数文件(简称为MATLAB的函数)。由于它们都是由ASCII码构成的,其扩展名均为“.m”,故统称为M文件。

由于M文件具有普通的文本格式,因而可以用任何编辑器建立和编辑。但一般最常用、而且最为方便的是使用MATLAB自带的编辑器,即利用MATLAB命令窗口中的菜单命令File→New→M-File或File→Open打开的M文件编辑窗口对M文件进行建立和编辑。MATLAB为了进一步方便用户对M文件的建立和编辑,在窗口中也设置了快捷工具“”和“”。(1)文本文件

文本文件由一系列的MATLAB语句组成,它类似于DOS下的批处理文件,在MATLAB的提示符下直接键入文本文件名,回车后便可自动执行文件中的一系列命令,直至给出最终结果。文本文件在工作空间中运算的变量为全局变量。【例1-1】利用MATLAB的文本文件,求函数

在x=-2,x=3,x=1时的值。123

解 ①首先在MATLAB的命令窗口中,利用菜单命令File→New→M-File,打开M文件编辑器,然后在编辑器中根据例题中所给函数编写以下文本文件,并以ex1_1_1为文件名进行保存(后缀.m自动追加)。

其中,带%的语句为说明语句,不被MATLAB所执行,它可以在命令窗口中利用help ex1_1_1命令来显示%后的内容。

② 当以上文本文件ex1_1_1.m建立后,在MATLAB 命令窗口中输入

回车后显示:

由于文本文件中的变量为全局变量,故以上变量x,x,x的值,123也可在文本文件外先给定,此时的文本文件为

当以上文本文件ex1_1_2.m建立后,利用以下命令,同样可以得到以上结果。

以上两种方式下,文本文件中变量的值都被保存下来,这与下面的函数文件是不同的。(2)函数文件

函数文件的功能是建立一个函数,且这个函数可以同MATLAB的库函数一样使用,它与文本文件不同,在一般情况下不能单独键入函数文件的文件名来运行一个函数文件,它必须由其他语句来调用,函数文件允许有多个输入参数和多个输出参数值。其基本格式如下:

其中,x,y,z,…是形式输入参数;而f1,f2,f3,…是返回的形式输出参数值;fun是函数名。

实际上,函数名一般就是这个函数文件的磁盘文件名,注释语句段的内容同样可用help命令显示出来。

调用一个函数文件只需直接使用与这个函数一致的格式

其中,a,b,c,…是相应的实际输入参数的值;而y1,y2,y3,…是相应的实际输出参数的值。【例1-2】利用MATLAB的函数文件,求函数

在x=-2,x=3,x=1时的值。123

解 ① 由于函数文件的建立与文本文件完全一样,故与例1-1一样首先根据例题中所给函数在MATLAB的M文件编辑器下,建立以下函数文件ex1_2.m。

② 当以上函数文件ex1_2.m建立后,在MATLAB命令窗口中输入命令:

结果显示:

函数文件中定义的变量为局部变量,也就是说它只在函数内有

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?