MATLAB编程与SIMULINK仿真简介.doc_第1页
MATLAB编程与SIMULINK仿真简介.doc_第2页
MATLAB编程与SIMULINK仿真简介.doc_第3页
MATLAB编程与SIMULINK仿真简介.doc_第4页
MATLAB编程与SIMULINK仿真简介.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

357 附录B MATLAB编程与SIMULINK仿真简介 MATLAB编程与SIMULINK仿真简介A.1 MATLAB编程基础MATLAB6.5提供了丰富的编程语句结构和实用函数,MATLAB产品组是支持你从概念设计、算法开发、建模仿真到实时实现的理想的集成环境。无论是进行科学研究还是产品开发,MATLAB产品族都是必不可少的工具。这里介绍一些常用的编程技巧和方法,以便同学们能尽快地启动起来,更好地应用MATLAB。1. MATLAB文件的编写与调试环境M文件的编写与调试在MATLAB Editor/Debugger下进行(图B1-1),这个集成环境可以方便地进行新建、修改、存储,选择Debug菜单中的Run命令就可以运行程序,运行结果显示在MATLAB Command Window 中。程序的调试应用Debug菜单就可以进行调试,其他高级语言中的Set/Clear Breakpoint、Single Step、Stop if error等选项都有,可以方便的调试程序。图B1-1 M文件的编写与调试窗口在MATLAB Editror/Debugger下按照MATLAB编程的规则键入相关的语句并存盘,就可以得到一个后缀为.m的文本文件。2. MATLAB脚本文件和函数文件在MATLAB中,无论是问题的提出还是结果的表达都采用你习惯的数学描述方法,而不需要用传统的编程语言进行处理。应用MATLAB编写出来的程序可以是M脚本文件(Script file),也可以是M函数文件(Function file),这些文件都由纯ASCII字符构成,其后缀。MATLAB下 M脚本文件是一串按用户意图排列而成的(包括控制流向指令在内)MATLAB指令集合,可以直接执行,用户只需在Command Window中MATLAB提示符后键入文件名即可执行。脚本文件运行后所产生的所有变量都驻留在MATLAB的基本工作空间(Base workspace)中,只要用户不加以清除且MATLAB指令窗不关闭,则这些变量将一直保存在基本工作空间。与脚本文件不同,函数文件犹如一个“黑箱”,从外界只看到传给它的输入量和送出来的计算结果,内部运作是看不见的,并且函数文件的第一行总是以“function”引导的“函数申明行”。M函数文件必须由其它的语句来调用,在一般情况下用户不能单独键入其文件名来运行一个M函数。MATLAB下的大多数的应用程序由M函数文件形式给出,例如求取系统特征方程的根的root ()函数和绘制零极点图的pzmap ()函数等。除了M函数文件之外,MATLAB还提供了大量的底层函数(内部),这类文件是不可读的,与M函数一起统称为函数。3. M文件的一般结构从结构上看脚本文件只是比函数文件少一个“函数申明行”,所以脚本文件和函数文件除第一行不同外,其余的结构都是一样的。典型M函数文件的基本结构可由以下几部分构成:(1)函数申明行(Function declaration line),位于函数文件的首行,以MATLAB关键字function 开头,函数名以及函数的输入输出宗量都在这一行中定义;(2)H1行(The first help text line):紧随函数申明行之后以%开头的第一行注释行。H1行包括大写体的函数名和运用关键词简要描述的函数功能,该行供lookfor关键词查询和help在线帮助查询使用;(3)在线帮助文本(Help text)区:H1行及其之后的连续以%开头的第一行的所有注释行构成在线帮助文本;(4)编写和修改记录:标志编写及修改该M文件的作者、日期,便于档案管理;(5)函数体(Function body):该部分由实现M函数功能的MATLAB指令组成。它接收输入宗量,进行程序流程控制,得到输出宗量。从运算角度看“函数申明行”和“函数体”两部分是构成M函数文件所必不可少的。函数文件(Function file)由function()语句引导,其基本格式为: function 返回变量名=函数名(输入变量列表)注释说明语句段函数体语句在编制程序的过程中输入和返回的变量分别由nargin和nargout两个MATLAB的保留参数给出,返回变量要多于1个,应该用方括号括起来,输入变量用逗号隔开。注释语句段的内容如果用户采用help命令则可以显示出来,其功能和MATLAB提供的函数是一致的。 下面以MATLAB6.5 control toolbox内的Bode()函数来说明M函数文件结构示例如下:exm001.mfunction magout,phase,w = bode(a,b,c,d,iu,w) 函数申明行%BODE Bode frequency response of LTI models. 描述该函数命令能够完成的% 功能% Revised A.C.W.Grace 8-15-89, 2-4-91, 6-21-92 注明该函数文件的修改时% Revised Clay M. Thompson 7-9-90 间、版权及其版本等内容% Revised A.Potvin 10-1-94% Copyright 1986-2002 The MathWorks, Inc. % $Revision: 1.23 $ $Date: 2002/04/04 15:16:04 $ni = nargin; 函数体语句no = nargout;% Check for demo and quick exitif ni=0, eval(exresp(bode) returnenderror(nargchk(2,6,ni);% Determine which syntax is being usedswitch nicase 2 end% end bode在函数体内应用的除返回和输入变量这些在function语句中直接应用的变量以外的所有变量都是全局变量,也就是在函数返回后,这些变量会自动在MATLAB的空间中自动清除掉。如果想使得这样的中间变量程为在整个程序中起作用的变量则将应用MATLAB提供的global命令将它们设置为全局变量。 4. MATLAB程序流程控制 计算机编程语言允许编程人员根据某些判决结构来控制程序流的执行次序。MATLAB6.5提供了5种控制程序流的结构,即for循环结构,while循环结构,if-else-end分支结构,以及switch-case结构,try-catch结构。MATLAB的这5种流控制指令的用法与其它语言十分相似,简单介绍如下:1)for循环结构for循环结构的语法形式为:for xx=array(commmands)end其中for之后的变量xx称为循环变量,而for和end之间的commands称为循环体。循环体被重复执行的次数由for之后的数组array的列数来确定。2)while循环结构while循环结构的语法形式为:while expression(commands)end在while和end之间的commands被称为循环体。当MATLAB遇到while命令时,首先检测expression的值,如果其值为逻辑真(非0),则执行该组命令。当组命令commands执行完后,继续监测expression表达式的值,如果表达式的值仍旧为真,循环执行组命令;一旦表达式expression的值为假时,结束循环。3)if-else-end分支结构if-else-end指令为程序流提供了一种分支机构,它有多种形式,最简单一种为:if expression(commands)end如果表达式expression为真,则执行组命令commands,否则跳过该组命令。4)switch-case结构switch-case指令的一般语句结构形式如下:switch ex ex为一个标量或字符串case test1(commands1) 当ex等于test1时,执行组命令commands1,然后挑出该结构case test2 case testi (commandsi) 当ex等于testi时,执行该组命令i,然后跳出该结构。otherwise (commands) 当ex不等于前面的所有检测值时,执行该组命令。 end5)try-catch 结构try-catch的指令的语法结构形式为:try(commands1) 组命令commands1总被执行,若正确,则跳出此结构。catch (commands2) 当组命令commands1出现执行错误时,commands2才被执行。End控制程序流程的其他常用指令还有:(1)return 指令 在被调函数中应用了return指令,可以强制MATLAB结束执行该函数并把控制转出。(2)input和keyboard指令 input指令将MATLAB的控制权暂时交给用户,用户通过键盘键入数值、字符串或者表达式,经回车键把键入内容输入工作空间,同时把控制权交还给MATLAB。常用的格式为: v=input(message) 将用户键入的内容赋值给变量v。 v=input(message,s)将用户键入的内容作为字符串赋值给变量v。 Keyboard指令使得MATLAB把控制权交给键盘,用户可以从键盘输入各种合法的指令,只有当用户使用return指令时,控制权才交回给程序。(3)yesinput指令 该指令是一个智能输入指令,它提供了一个缺省输入值,并可以对输入范围进行检查。其调用格式为 V=yesinput(Prompt,Default,Possible)其中Prompt为文字提示,Default为缺省设置“值”,Possible为可选值的范围。(4)pause指令 暂停执行文件,等待用户按任意键继续。(5)break指令 使用break指令可不必等待循环的自然结束,而是根据循环内部另设的某种条件是否满足,去决定是否退出循环。(6)error和warning指令 警示和出错指令。在编写M文件时,常用的出错和警示指令有: error(message) 显示出错信息,终止程序。 warning(message) 显示警告信息,程序继续运行。 lasterr 显示MATLAB自动判断的最新出错原因并终止程序。A.2 SIMULINK仿真方法简介SIMULINK是一个进行动态系统的建模、仿真和综合分析的集成软件包。它可以处理的系统包括:线性、非线性系统;离散、连续及混合系统;单任务、多任务离散事件系统。在SIMULINK提供的图形用户界面GUI上,只要进行鼠标的简单拖拉操作就可以构造出复杂的仿真模型。它的外表以方框图形式呈现,且采用分层结构。从建模角度,SIMULINK既适用于自上而下的设计流程,又适用于自下而上的逆程设计。从分析研究角度,这种SIMULINK模型不仅让用户知道具体环节的动态细节,而且能够让用户清晰的了解各器件、各子系统、各系统间的信息交换,掌握各部分的交互影响。1. 应用SIMULINK的基本操作1)在MATLAB的命令窗运行指令simulink或点击命令窗口中的图标,便可以打开如图B1-2所示的SIMULINK模块库浏览器(Simulink Library Browser)。 图B1-2 SIMULINK库浏览器2)点击Source字库前的“+”号(或双击字库名),便可以得到各种信源模块,如图B1-3。 图B1-3 信源子库的模块3)点击“新建”图标,打开一个名为untitled的空白模型窗口,如图B1-4。 图B1-4 SIMULINK的新建模型窗口4)用鼠标指向所需的信号源(如阶跃信号Step),按下鼠标左键,把它拖至untitled窗,就生成一个阶跃信号的复制品。,如图B1-5。 图B1-5模型创建中的模型窗口5)采用上述方法,将信宿库Sink中的示波器scope拷贝到模型窗口,把鼠标指向信源右侧的输出端,当光标变成十字符时,按住鼠标任意键,移向示波器的输入端,就完成了两个模块间的信号连接,如图B1-6。 图B1-6 创建模型完毕中的模型窗口6)进行仿真,双击示波器,打开示波器显示屏,如图1-7。点击模型窗口中的“仿真启动”图标或点击simulink菜单下的start,仿真就开始了,就可以观测到阶跃信号的波形了,如图B1-7。 图B1-7 仿真结果波形2. 常用的Sourse库信源和Sink库信宿无论是线性系统还是非线性系统,不管建模还是仿真都要用到元件库中提供的各种元件和模块。列表说明常用信源和信宿,如表B1-1、B1-2。3.模块操作1)模块的基本操作模块的选定 模块的选定操作是其他操作(模块的复制、移动、删除)的前导操作,被选定的模块四个角处会出现小黑块。选定单个模块时,用鼠标点击待选模块即可;选定多个模块时,可按下shift键依次点击所选模块或按住鼠标任意键拉出包含待选模块的虚线框,则可以选中包括连接模块的信号线在内的模块。模块的复制 不同模型窗口之间的模块的复制时,在一个窗口中鼠标点中待复制的模块,将其拖至另外一窗口,然后松开鼠标即可;在同一窗口复制模块时,按下鼠标右键,拖动鼠标至合适的位置松开鼠标即可,也可以按下ctrl键,用鼠标左键点中待复制的模块,拖动鼠标至合适位置松开鼠标就可以了。模块的移动 选中所需移动的模块,按下鼠标左键将模块拖动到合适的位置即可。同时模块移动时与其相连的信号线也随之移动,在不同的模型窗口之间移动模块,需同时按下shift键。模块的删除 选中带删除的模块,按键盘上的删除按键delete即可。模块的大小调整 选中模块,待模块四个角处的出现小黑块时,用鼠标拖动小黑块使得模块至适当大小时然后释放,就能调整好模块的大小。模块的旋转 选用菜单format中的flip block 可将选定模块旋转1800,选用rotate block 将模块旋转900。 表B1-1 常用的SOURSE库信源名称模块形状功能说明Clock(连续)仿真时钟输出每个仿真步点的时刻Constant恒值输出数值可设置From file从文件读数据 从MAT文件获取信号矩阵,信号以行方式存放From workspace从工作内存读取数据从MATLAB工作空间中指定的数组和构架中读取数据Signal Generator信号发生器可产生正弦、方波、锯齿、随机波等信号Sine Wave正弦信号可设置幅值、相位和频率Step阶跃输出可设置阶跃时刻,阶跃前后的幅值(表B1-1说明:信源中还有标准的信源Band-Limited White Noise,Chirp Signal,Digital Clock,Discrete Pulse Generator, Uniform Random Numbe等。) 模块名的修改、及字体设置 点击模块名,将在原名字的位置上出现一个编辑框,将光标移动到修改位置处即可进行修改,字体的设置可选用菜单Format中Font字体对话框来进行修改。2)模块的参数设置几乎所有的模块都有一个相应的参数对话框,双击模块就可以打开模块参数对话框,然后改变对话框中的适当的栏目即可改变模块的参数。在改变参数的过程中,参数对话框主要应用四个按钮。OK参数设置完成,关闭对话框;Cancel取消所做的操作,恢复原先的参数值,关闭对话框;Help

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论