MATLAB语言与计算机仿真寇光杰kouguangjie@eyou.com课件资料:通过本课程的学习,应理解计算机仿真的基本步骤和相关知识,并熟练掌握当前流行的演算式MATLAB语言,结合所学课程,学会运用MATLAB语言进行系统仿真和辅助设计,为今后从事科学研究打下较好的基础。课程任务第一章计算机仿真概述及MATLAB基本操作第二章数值数组及其运算第三章字符串、元胞和构架数组第四章数值计算第五章符号计算第六章数据和函数可视化及图像处理简介第七章M文件和面向对象编程第八章SIMULINK仿真基础第九章GUI设计及控制系统仿真实例第十章MATLAB编译器MATLABAPI简介教学内容综合成绩评定:平时成绩(70%)课堂、上机、作业期末考试成绩(30%)注:考试方式为上机考试参考书目•精通MATLAB6.5版张志涌等编著北京航空航天大学出版社2003.3•MATLAB电子仿真与应用韩利竹等编著国防工业出版社•MATLAB控制系统设计欧阳黎明编著国防工业出版社•应用MATLAB建模与仿真陈桂明等编著科学出版社•MATLAB扩展编程何强,何英编著清华大学出版社•MATLAB应用程序接口指南刘志坚编著科学出版社•MATLAB高级应用-图形图像处理清源计算机工作室编著机械工业出版社第一章、计算机仿真和MATLAB语言概述第一节计算机仿真的基本概念一、计算机辅助设计与仿真的概念1、计算机辅助设计的概念•计算机辅助设计(CAD)技术是利用计算机高速而精确的计算能力、大容量存储的能力,结合设计者的综合分析、逻辑判断及创造性思维,用以加快设计进程、缩短设计周期、提高设计质量的技术。ComputerAidedDesign•说明:计算机辅助设计从广义上来讲它包含了计算机仿真的内容,从狭义上说它的主要工作是利用计算机的运算能力来处理设计者手工处理所遇到的不便与繁琐。2、计算机仿真的概念仿真的定义•仿真是利用物理的或数学的模型来类比模仿现实过程,以寻求对真实过程的认识。它所遵循的基本原则是相似性原理。计算机仿真的定义•计算机仿真是基于所建立的系统仿真模型,利用计算机对系统进行分析与研究的方法。1、模型的定义•模型是对现实系统有关结构信息和行为的某种形式的描述,是对系统的特征与变化规律的一种定量抽象,是人们认识事物的一种手段或工具。2、模型的分类(1)物理模型•指不以人的意志为转移的客观存在的实体,如:飞行器研制中的飞行模型;船舶制造中的船舶模型等。(2)数学模型•是从一定的功能或结构上进行相似,用数学的方法来再现原型的功能或结构特征。二、计算机仿真模型(3)仿真模型•指根据系统的数学模型,用仿真语言转化为计算机可以实施的模型。三、计算机仿真的三要素及基本步骤(内容)1、三要素(1)系统:研究的对象(2)模型:系统的抽象(3)计算机:工具与手段系统模型计算机建立仿真模型建立数学模型仿真实验结果分析图1.1计算机仿真三要素关系图2、基本步骤•包括三个基本的内容:建模仿真实验结果分析问题的阐述设置目标建立模型仿真实验设计编程序验证正确与否确认运行分析输出结果是是否否图1.2计算机仿真程序流程第二节仿真的分类一、按模型分类1、物理仿真:采用物理模型,有实物介入!•具有效果逼真,精度高等优点,但造价高或耗时长,大多在一些特殊场合下采用(如导弹、卫星一类飞行器的动态仿真,发电站综合调度仿真等),具有实时性、在线的特点。2、数学仿真:采用数学模型•在计算机上进行,具有非实时性、离线的特点,经济、快速、实用。二、按计算机类型分类1、模拟仿真:采用数学模型,在模拟计算机上进行的实验研究。50年代•描述连续物理系统的动态过程比较自然、逼真,具有仿真速度快、失真小、结果可靠的优点,但受元器件性能影响,仿真精度较低,对计算机控制系统的仿真较困难,自动化程度低。•模拟计算机的核心是运算部分,它由我们熟知的“模拟运算放大器”为主要部件所构成。2、数字仿真:采用数学模型,在数字计算机上借助于数值计算方法所进行的仿真实验。60年代•计算与仿真的精度较高。理论上计算机的字长可以根据精度要求来“随意”设计,因此其仿真精度可以是无限,但是由于受到误差积累、仿真时间等因素影响,其精度也不易定得太高。•对计算机控制系统的仿真比较方便。仿真实验的自动化程度较高,可方便地实现显示、打印等功能。•计算速度比较低,在一定程度上影响到仿真结果的可信度。但随着计算机技术的发展,“速度问题”会在不同程度上有所改进与提高。•数字仿真没有专用的仿真软件支持,需要设计人员用高级程序语言编写求解系统模型及结果输出的程序。3、混合仿真:结合了模拟仿真与数字仿真。4、现代计算机仿真:采用先进的微型计算机,基于专用的仿真软件、仿真语言来实现,其数值计算功能强大,使用方便,易学。80年代以后第三节仿真技术的应用与发展一、仿真技术的应用1、航空与航天工业•飞行器设计中的三级仿真体系:纯数学模拟(软件)、半实物模拟、实物模拟或模拟飞行实验。•飞行员及宇航员训练用飞行仿真模拟器。2、电力工业•电力系统动态模型实验:电力系统负荷分配、瞬态稳定性以及最优控制等。•电站操作人员培训模拟系统。3、原子能工业•模拟核反应堆•核电站仿真器用来训练操作人员以及研究异常故障的排除处理。4、石油、化工及冶金工业5、非工程领域•医学•社会学•宏观经济与商业策略的研究二、应用仿真技术的意义1、经济•大型、复杂系统直接实验是十分昂贵的,如:空间飞行器的一次飞行实验的成本约在1亿美元左右,而采用仿真实验仅需其成本的1/10~1/5,而且设备可以重复使用。2、安全•某些系统(如载人飞行器、核电装置等),直接实验往往会有很大的危险,甚至是不允许的,而采用仿真实验可以有效降低危险程度,对系统的研究起到保障作用。3、快捷•提高设计效率:比如电路设计,服装设计等等。4、具有优化设计和预测的特殊功能•对一些真实系统进行结构和参数的优化设计是非常困难的,这时仿真可以发挥它特殊的优化设计功能。•在非工程系统中(如社会、管理、经济等系统),由于其规模及复杂程度巨大,直接实验几乎不可能,这时通过仿真技术的应用可以获得对系统的某种超前认识。三、仿真技术的发展趋势1、硬件方面:基于多CPU并行处理技术的全数字仿真将有效提高仿真系统的速度,大大增强数字仿真的实时性。2、应用软件方面:直接面向用户的数字仿真软件不断推陈出新,各种专家系统与智能化技术将更深入的应用于仿真软件开发之中,使得在人机界面、结果输出、综合评判等方面达到更理想境界。3、分布式数字仿真:充分利用网络技术,协调合作,投资少,效果好。4、虚拟现实技术:综合了计算机图形技术、多媒体技术、传感器技术、显示技术以及仿真技术等多学科,使人置身于真实环境之中。第四节计算机仿真软件一、仿真软件的发展1、程序编程阶段•所有问题(如:微分方程求解、矩阵运算、绘图等)都是用高级算法语言(如C、FORTRAN等)来编写。2、程序软件包阶段•出现了“应用子程序库”。3、交互式语言阶段(仿真语言)•仿真语言可用一条指令实现某种功能,如“系统特征值的求解”,使用人员不必考虑什么算法,以及如何实现等低级问题。4、模型化图形组态阶段•符合设计人员对基于模型图形化的描述。二、几种仿真软件1、ORCAD:通用的电子电路仿真软件,适合于元件级仿真。2、SYSTEMVIEW:系统级的电路动态仿真软件3、MATLAB:具有强大的数值计算能力,包含各种工具箱,其程序不能脱离MATLAB环境而运行,所以严格讲,MATLAB不是一种计算机语言,而是一种高级的科学分析与计算软件。4、SIMULINK:是MATLAB附带的基于模型化图形组态的动态仿真环境。第五节MATLAB简介一、MATLAB的发展史MATLAB名字由MATrix和LABoratory两词的前三个字母组合而成。那是20世纪七十年代,时任美国新墨西哥大学计算机系主任的CleveMoler出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK矩阵软件工具包库程序的的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。1984年由Little、Moler、SteveBangert合作成立MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。1997年春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版直到现在的MATLAB6.5和7.0版。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。二、MATLAB语言的主要特点(1)具有丰富的数学功能包括矩阵各种运算(正交变换、三角分解、特征值等)、各种特殊函数(贝塞尔函数、勒让德函数、伽码函数、贝塔函数、椭圆函数)、各种数学运算功能(微积分、插值、求极值、方程求根、FFT、解常微分方程等)。(2)具有很好的图视系统•可方便地画出两维和三维图形。•高级图形处理:色彩控制、句柄图形、动画等。•图形用户界面GUI制作工具,可以制作用户菜单和控件。使用者可以根据自己的需求编写出满意的图形界面。(3)可以直接处理声音和图形文件。声音文件(如:WAV文件)、图形文件(如:bmp、gif、pcx、tif、jpeg等文件)。(4)具有若干功能强大的应用工具箱。SIMULINK、COMM、DSP、SIGNAL等。(5)使用方便,具有很好的扩张功能。(6)具有很好的帮助功能可以M文件转变为独立于平台的EXE可执行文件。使用MATLAB语言编写的程序可以直接运行,无需编译。提供十分详细的帮助文件(PDF、HTML、demo文件)。联机查询指令:help指令(例:helpelfun,helpexp,helpsimulink),lookfor关键词(例:lookforfourier)。MATLAB的应用接口程序API是MATLAB提供的十分重要的组件,由一系列接口指令组成。用户就可在FORTRAN或C中,把MATLAB当作计算引擎使用。三、MATLAB运行环境介绍(一)MATLAB提供两种运行方式(1)命令方式•直接在命令窗口输入命令来实现计算或作图功能(2)M文件运行方式•单击FILENEWM-FILE打开M文件输入运行界面,输入程序文件。(具体又分为脚本文件和函数文件两种方式)。该运行方式优点是可以调试也可以重复使用。(二)MATLAB中的窗口简介(1)命令窗口(CommandWindow)a.启动MATLAB命令窗口•双击MATLAB图标,就可进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。b.MATLAB语句形式》变量=表达式;•键入回车键时,该语句被执行。窗口自动显示出语句执行的结果。如果希望结果不被显示,则只要在语句之后加上一个分号“;”c.命令行编辑器方向键和控制键可以编辑修改已输入的命令回调上一行命令回调下一行命令命令窗口的分页输出•moreoff:不允许分页moreon:允许分页•more(n):指定每页输出的行数•回车前进一行,空格键显示下一页,q结束当前显示。多行命令(…)•如果命令语句超过一行或者太长希望分行输入,则可以使用多行命令继续输入。•如:》S=1-12+13+4+…9-4-18;(2)M文件窗口(3)起始面板(LaunchPad)(4)工作空间窗口(Workspace)(5)命令历史窗口(CommandHistory)(6)当前目录窗口(CurrentDirectory)(7)图形窗口(FigureNo…)(8)GUI制作窗口(三)变量和数值显示格式1、变量(1)变量的命名:变量的名字必须以字母开头(不能超过31个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。(2)一些特殊的变量ans:用于结果的缺省变量名i、j:虚