13 MATLAB编程与SIMULINK仿真简介.docx
页数:10页文件大小:138.5 KB来源: 数字信号处理ppt课件 {{#tag}} {{#state}}已收藏{{/state}} {{^state}}请收藏{{/state}} {{/tag}}
本课件为附录B,面向课程实验与仿真需要,先介绍MATLAB脚本文件与函数文件的区别、函数返回变量的写法,以及for循环等程序流程控制指令;随后介绍应用SIMULINK的基本操作,包括模型创建、模型窗口与模块库的使用、Source库信源与Sink库信宿的选取,并结合信号发生器模块演示波形生成与x-y曲线图形显示。
查看本课件的文字版(共 10 页,供检索与复制)
第1页:MATLAB编程与SIMULINK仿真
- 数字信号处理MATLAB编程与SIMULINK仿真简介A.1MATLAB编程基础MATLAB6.5提供了丰富的编程语句结构和实用函数,MATLAB产品组是支持你从概念设计、算法开发、建模仿真到实时实现的理想的集成环境。
- 无论是进行科学研究还是产品开发,MATLAB产品族都是必不可少的工具。
- 这里介绍一些常用的编程技巧和方法,以便同学们能尽快地启动起来,更好地应用MATLAB。
- 1.MATLAB文件的编写与调试环境M文件的编写与调试在MATLABEditor/Debugger下进行(图B1-1),这个集成环境可以方便地进行新建、修改、存储,选择Debug菜单中的Run命令就可以运行程序,运行结果显示在MATLABCommandWindow中。
- 程序的调试应用Debug菜单就可以进行调试,其他高级语言中的Set/ClearBreakpoint、SingleStep、Stopiferror等选项都有,可以方便的调试程序。
- 图B1-1M文件的编写与调试窗口在MATLABEditror/Debugger下按照MATLAB编程的规则键入相关的语句并存盘,就可以得到一个后缀为.m的文本文件。
第2页:MATLAB脚本文件和函数文件
- 附录BMATLAB编程与SIMULINK仿真简介2.MATLAB脚本文件和函数文件在MATLAB中,无论是问题的提出还是结果的表达都采用你习惯的数学描述方法,而不需要用传统的编程语言进行处理。
- 应用MATLAB编写出来的程序可以是M脚本文件(Scriptfile),也可以是M函数文件(Functionfile),这些文件都由纯ASCII字符构成,其后缀m。
- MATLAB下M脚本文件是一串按用户意图排列而成的(包括控制流向指令在内)MATLAB指令集合,可以直接执行,用户只需在CommandWindow中MATLAB提示符>>后键入文件名即可执行。
- 脚本文件运行后所产生的所有变量都驻留在MATLAB的基本工作空间(Baseworkspace)中,只要用户不加以清除且MATLAB指令窗不关闭,则这些变量将一直保存在基本工作空间。
- 与脚本文件不同,函数文件犹如一个“黑箱”,从外界只看到传给它的输入量和送出来的计算结果,内部运作是看不见的,并且函数文件的第一行总是以“function”引导的“函数申明行”。
- M函数文件必须由其它的语句来调用,在一般情况下用户不能单独键入其文件名来运行一个M函数。
- MATLAB下的大多数的应用程序由M函数文件形式给出,例如求取系统特征方程的根的root()函数和绘制零极点图的pzmap()函数等。
- 除了M函数文件之外,MATLAB还提供了大量的底层函数(内部),这类文件是不可读的,与M函数一起统称为函数。
- 3.M文件的一般结构从结构上看脚本文件只是比函数文件少一个“函数申明行”,所以脚本文件和函数文件除第一行不同外,其余的结构都是一样的。
- 典型M函数文件的基本结构可由以下几部分构成:(1)函数申明行(Functiondeclarationline),位于函数文件的首行,以MATLAB关键字function开头,函数名以及函数的输入输出宗量都在这一行中定义。
- (2)H1行(Thefirsthelptextline):紧随函数申明行之后以%开头的第一行注释行。
- H1行包括大写体的函数名和运用关键词简要描述的函数功能,该行供lookfor关键词查询和help在线帮助查询使用。
- 3在线帮助文本(Helptext)区:H1行及其之后的连续以%开头的第一行的所有注释行构成在线帮助文本。
- 4编写和修改记录:标志编写及修改该M文件的作者、日期,便于档案管理。
- 5函数体(Functionbody):该部分由实现M函数功能的MATLAB指令组成。
- 它接收输入宗量,进行程序流程控制,得到输出宗量。
- 从运算角度看“函数申明行”和“函数体”两部分是构成M函数文件所必不可少的。
- 函数文件(Functionfile)由function()语句引导,其基本格式为:function返回变量名=函数名(输入变量列表)注释说明语句段函数体语句在编制程序的过程中输入和返回的变量分别由nargin和nargout两个MATLAB的保留。
第3页:函数的返回变量
- 附录BMATLAB编程与SIMULINK仿真简介参数给出,返回变量要多于1个,应该用方括号括起来,输入变量用逗号隔开。
- 注释语句段的内容如果用户采用help命令则可以显示出来,其功能和MATLAB提供的函数是一致的。
- 下面以MATLAB6.5 controltoolbox内的Bode()函数来说明M函数文件结构示例如下:[exm001.m]function[magout,phase,w]=bode(a,b,c,d,iu,w)%BODEBodefrequencyresponseofLTImodels.%函数申明行描述该函数命令能够完成的功能注明该函数文件的修改时间、版权及其版本等内容%RevisedA.C.W.Grace8-15-89,2-4-91,6-21-92%RevisedClayM.Thompson7-9-90%RevisedA.Potvin10-1-94%Copyright1986-2002TheMathWorks,Inc.%$Revision:1.23$$Date:2002/04/0415:16:04$ni =nargin。
- no =nargout。
- %Checkfordemoandquickexitifni==0,eval('exresp(''bode'')')returnend函数体语句error(nargchk(2,6,ni))。
- %Determinewhichsyntaxisbeingusedswitchnicase2……end% endbode在函数体内应用的除返回和输入变量这些在function语句中直接应用的变量以外的所有变量都是全局变量,也就是在函数返回后,这些变量会自动在MATLAB的空间中自动清除掉。
- 如果想使得这样的中间变量程为在整个程序中起作用的变量则将应用MATLAB提供的global命令将它们设置为全局变量。
- 4.MATLAB程序流程控制计算机编程语言允许编程人员根据某些判决结构来控制程序流的执行次序。
- MATLAB6.5提供了5种控制程序流的结构,即for循环结构,while循环结构,if-else-end分支结构,以及switch-case结构,try-catch结构。
- MATLAB的这5种流控制指令的用法与其它语言十分相似,简单介绍如下:1)for循环结构for循环结构的语法形式为。
第4页:for循环与程序流程
- 附录BMATLAB编程与SIMULINK仿真简介forxx=array(commmands)end其中for之后的变量xx称为循环变量,而for和end之间的commands称为循环体。
- 循环体被重复执行的次数由for之后的数组array的列数来确定。
- 2)while循环结构while循环结构的语法形式为:whileexpression(commands)end在while和end之间的commands被称为循环体。
- 当MATLAB遇到while命令时,首先检测expression的值,如果其值为逻辑真(非0),则执行该组命令。
- 当组命令commands执行完后,继续监测expression表达式的值,如果表达式的值仍旧为真,循环执行组命令。
- 一旦表达式expression的值为假时,结束循环。
- 3)if-else-end分支结构if-else-end指令为程序流提供了一种分支机构,它有多种形式,最简单一种为:ifexpression(commands)end如果表达式expression为真,则执行组命令commands,,否则跳过该组命令。
- 4)switch-case结构switch-case指令的一般语句结构形式如下:switchexcasetest1(commands1)casetest2……casetesti(commandsi)otherwise(commands)endex为一个标量或字符串当ex等于test1时,执行组命令commands1,然后挑出该结构当ex等于testi时,执行该组命令i,然后跳出该结构。
- 当ex不等于前面的所有检测值时,执行该组命令。
- 5)try-catch结构try-catch的指令的语法结构形式为:try(commands1)catch(commands2)End组命令commands1总被执行,若正确,则跳出此结构。
- 当组命令commands1出现执行错误时,commands2才被执行。
第5页:程序流程控制指令
- 附录BMATLAB编程与SIMULINK仿真简介控制程序流程的其他常用指令还有:1return指令在被调函数中应用了return指令,可以强制MATLAB结束执行该函数并把控制转出。
- 2input和keyboard指令input指令将MATLAB的控制权暂时交给用户,用户通过键盘键入数值、字符串或者表达式,经回车键把键入内容输入工作空间,同时把控制权交还给MATLAB。
- 常用的格式为:v=input(‘message’)将用户键入的内容赋值给变量v。
- v=input(‘message’,‘s’)将用户键入的内容作为字符串赋值给变量v。
- Keyboard指令使得MATLAB把控制权交给键盘,用户可以从键盘输入各种合法的指令,只有当用户使用return指令时,控制权才交回给程序。
- 3yesinput指令该指令是一个智能输入指令,它提供了一个缺省输入值,并可以对输入范围进行检查。
- 其调用格式为V=yesinput(‘Prompt’,Default,Possible)其中Prompt为文字提示,Default为缺省设置“值”,Possible为可选值的范围。
- 4pause指令暂停执行文件,等待用户按任意键继续。
- 5break指令使用break指令可不必等待循环的自然结束,而是根据循环内部另设的某种条件是否满足,去决定是否退出循环。
- (6)error和warning指令指令有:error(‘message’)warning(‘message’)lasterr警示和出错指令。
- 在编写M文件时,常用的出错和警示显示出错信息,终止程序。
- 显示警告信息,程序继续运行。
- 显示MATLAB自动判断的最新出错原因并终止程序。
- A.2SIMULINK仿真方法简介SIMULINK是一个进行动态系统的建模、仿真和综合分析的集成软件包。
- 它可以处理的系统包括:线性、非线性系统。
- 离散、连续及混合系统。
- 单任务、多任务离散事件系统。
- 在SIMULINK提供的图形用户界面GUI上,只要进行鼠标的简单拖拉操作就可以构造出复杂的仿真模型。
- 它的外表以方框图形式呈现,且采用分层结构。
- 从建模角度,SIMULINK既适用于自上而下的设计流程,又适用于自下而上的逆程设计。
- 从分析研究角度,这种SIMULINK模型不仅让用户知道具体环节的动态细节,而且能够让用户清晰的了解各器件、各子系统、各系统间的信息交换,掌握各部分的交互影响。
第6页:应用SIMULINK的基本操作
- 附录BMATLAB编程与SIMULINK仿真简介1.应用SIMULINK的基本操作1)在MATLAB的命令窗运行指令simulink或点击命令窗口中的图标,便可以打开如图B1-2所示的SIMULINK模块库浏览器(SimulinkLibraryBrowser)。
- 图B1-2SIMULINK库浏览器2)点击Source字库前的“+”号(或双击字库名),便可以得到各种信源模块,如图B1-3。
- 图B1-3信源子库的模块3)点击“新建”图标,打开一个名为untitled的空白模型窗口,如图B1-4。
- 图B1-4SIMULINK的新建模型窗口4)用鼠标指向所需的信号源(如阶跃信号Step),按下鼠标左键,把它拖至untitled窗,就生成一个阶跃信号的复制品。
- 如图B1-5。
第7页:模型创建与模型窗口
- 附录BMATLAB编程与SIMULINK仿真简介图B1-5模型创建中的模型窗口5)采用上述方法,将信宿库Sink中的示波器scope拷贝到模型窗口,把鼠标指向信源右侧的输出端,当光标变成十字符时,按住鼠标任意键,移向示波器的输入端,就完成了两个模块间的信号连接,如图B1-6。
- 图B1-6创建模型完毕中的模型窗口6)进行仿真,双击示波器,打开示波器显示屏,如图1-7。
- 点击模型窗口中的“仿真启动”图标或点击simulink菜单下的start,仿真就开始了,就可以观测到阶跃信号的波形了,如图B1-7。
- 图B1-7仿真结果波形。
第8页:Source库信源与Sink库信宿
- 附录BMATLAB编程与SIMULINK仿真简介2.常用的Sourse库信源和Sink库信宿无论是线性系统还是非线性系统,不管建模还是仿真都要用到元件库中提供的各种元件和模块。
- 列表说明常用信源和信宿,如表B1-1、B1-2。
- 3.模块操作1)模块的基本操作模块的选定模块的选定操作是其他操作(模块的复制、移动、删除)的前导操作,被选定的模块四个角处会出现小黑块。
- 选定单个模块时,用鼠标点击待选模块即可。
- 选定多个模块时,可按下shift键依次点击所选模块或按住鼠标任意键拉出包含待选模块的虚线框,则可以选中包括连接模块的信号线在内的模块。
- 模块的复制不同模型窗口之间的模块的复制时,在一个窗口中鼠标点中待复制的模块,将其拖至另外一窗口,然后松开鼠标即可。
- 在同一窗口复制模块时,按下鼠标右键,拖动鼠标至合适的位置松开鼠标即可,也可以按下ctrl键,用鼠标左键点中待复制的模块,拖动鼠标至合适位置松开鼠标就可以了。
- 模块的移动选中所需移动的模块,按下鼠标左键将模块拖动到合适的位置即可。
- 同时模块移动时与其相连的信号线也随之移动,在不同的模型窗口之间移动模块,需同时按下shift键。
- 模块的删除模块的大小调整选中带删除的模块,按键盘上的删除按键delete即可。
- 选中模块,待模块四个角处的出现小黑块时,用鼠标拖动小黑块使得模块至适当大小时然后释放,就能调整好模块的大小。
- 模块的旋转选用菜单format中的flipblock可将选定模块旋转1800,选用rotateblock将模块旋转900。
- 表B1-1常用的SOURSE库信源说明功能模块形状名称输出每个仿真步点的时刻(连续)仿真时钟Clock数值可设置恒值输出Constant从MAT文件获取信号矩阵,信号以行方式存放从文件读数据Fromfile从MATLAB工作空间中指定的数组和构架中读取数据从工作内存读取数据Fromworkspace。
第9页:信号发生器模块
- 附录BMATLAB编程与SIMULINK仿真简介可产生正弦、方波、锯齿、随机波等信号信号发生器SignalGenerator可设置幅值、相位和频率正弦信号SineWave可设置阶跃时刻,阶跃前后的幅值阶跃输出Step(表B1-1说明:信源中还有标准的信源Band-LimitedWhiteNoise,ChirpSignal,DigitalClock,DiscretePulseGenerator,UniformRandomNumbe等。
- )模块名的修改、及字体设置点击模块名,将在原名字的位置上出现一个编辑框,将光标移动到修改位置处即可进行修改,字体的设置可选用菜单Format中Font字体对话框来进行修改。
- 2)模块的参数设置几乎所有的模块都有一个相应的参数对话框,双击模块就可以打开模块参数对话框,然后改变对话框中的适当的栏目即可改变模块的参数。
- 在改变参数的过程中,参数对话框主要应用四个按钮。
- OK参数设置完成,关闭对话框。
- Cancel取消所做的操作,恢复原先的参数值,关闭对话框。
- Help打开模块的超文本帮助文档。
- Apply将所做的修改应用于模块,不关闭对话框。
- 表B1-2Sink库信宿一览表说明功能模型形状名称Format栏设置显示数据格式。
- Decimation设置数据的抽选频率数值显示Display显示实时信号示波器Scope可接受向量输入,任何向量非零时,终止整个仿真终止仿真Stop以行方式保存时间或信号序列把数据保存为文件ToFile以列方式保存时间或信号序列把数据写成矩阵ToWorkspace。
第10页:图形显示x-y曲线
- 附录BMATLAB编程与SIMULINK仿真简介利用MATLAB图形显示x-y曲线,纵横坐标可以设置显示x-y图形XYGraph3)信号线的操作连线的绘制将光标指向连线的起点,光标变成十字后,按下鼠标键并拖动,直至终点,松开鼠标。
- SIMULINK会根据起点和终点的位置自动配置连线,或者采用直线或者采用折线,绘制出水平或垂直连接的直线。
- 按下shift键,拉动鼠标,即可绘制斜线。
- 选中所画线段,拖动鼠标至希望位置,可实现线段的移动,按键盘上的delete键可实现信号线的删除。
- 信号线的分支与折曲分支线的的产生可将鼠标指向分支点的起点,按下鼠标右键,鼠标变为十字,拖动鼠标直至分支点的终点处,释放鼠标,可画出分支线。
- 选中已存在的信号线,将光标指向待转折处,按住shift键,再按下鼠标左键,拖动鼠标至合适处即可绘制出折线。
- 折点的移动选中折线,将光标指向待移动的折点处,光标变成小圆圈时,按下鼠标左键拖动至希望处,释放鼠标。
- 4.仿真配置进行仿真前对仿真的起始时间和终止时刻的设定、仿真步长的选择、各种仿真容差的及数值积分算法的进行选定,配置好各种参数,就可以对按照上述步骤所建立的线性或非线性等系统进行仿真分析了。
{{#src}} {{/src}}