1、第7章 MATLAB图形用户界面设计7.1 菜单设计7.2 对话框设计7.3 用户界面设计工具目录目录7.1 菜单设计7.1.1 用户菜单的建立建立一级菜单项的函数调用形式为:一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,)建立子菜单项的函数调用形式为:子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,)目录目录7.1.2 菜单对象常用属性菜单对象具有Children、Parent、Tag、Type、UserData、Visible等公共属性。除公共属性外,还有一些常用的特殊属性。目录例7.1建立“图形演示系统”菜单。菜单
2、条中含有3个菜单项:Plot、Option和Quit。Plot中有Sine Wave和Cosine Wave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容如图7.1所示。其中Grid on和Grid off控制给坐标轴加网格线,Box on和Box off控制给坐标轴加边框,而且这4项只有在画有曲线时才是可选的。Figure Color控制图形窗口背景颜色。Quit控制是否退出系统。程序如下:screen=get(0,ScreenSize);W=screen(3);H=screen(4);figure(Color,1,1,1,Position,0.2*H,0.2
3、*H,0.6*W,0.4*H,. Name,图形演示系统,NumberTitle,off,MenuBar,none);%定义Plot菜单项hplot=uimenu(gcf,Label,&Plot);uimenu(hplot,Label,Sine Wave,Call,t=-pi:pi/20:pi;,plot(t,sin(t);,. set(hgon,Enable,on);,set(hgoff,Enable,on);,. set(hbon,Enable,on);,set(hboff,Enable,on);); uimenu(hplot,Label,Cosine Wave,Call,t=-pi:pi
4、/20:pi;,plot(t,cos(t);,. set(hgon,Enable,on);,set(hgoff,Enable,on);,.%定义Option菜单项 hoption=uimenu(gcf,Label,&Option); hgon=uimenu(hoption,Label,&Grig on,Call,grid on,Enable,off); hgoff=uimenu(hoption,Label,&Grig off,Call,grid off,Enable,off); hbon=uimenu(hoption,Label,&Box on,separator,on,Call,box on
5、,Enable,off); hboff=uimenu(hoption,Label,&Box off,Call,box off,Enable,off);目录目录7.1.3 快捷菜单在MATLAB中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立快捷菜单,具体步骤为:(1)利用uicontextmenu函数建立快捷菜单。(2)利用uimenu函数为快捷菜单建立菜单项。(3)利用set函数将该快捷菜单和某图形对象联系起来。目录目录 hfigcor=uimenu(hoption,Label,&Figure Color,Separator,on); uimenu(
6、hfigcor,Label,&Red,Accelerator,r,Call,set(gcf,Color,r);); uimenu(hfigcor,Label,&Blue,Accelerator,b,Call,set(gcf,Color,b);); uimenu(hfigcor,Label,&Yellow,Call,set(gcf,Color,y);); uimenu(hfigcor,Label,&White,Call,set(gcf,Color,w);); %定义Quit菜单项 uimenu(gcf,Label,&Quit,Call,close(gcf); 例7.2 绘制曲线y=2e-0.5x
7、sin(2x),并建立一个与之相联系的快捷菜单,用以控制曲线的线型和曲线宽度。 程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*sin(2*pi*x); hl=plot(x,y); hc=uicontextmenu; %建立快捷菜单 hls=uimenu(hc,Label,线型); %建立菜单项 hlw=uimenu(hc,Label,线宽); uimenu(hls,Label,虚线,Call,set(hl,LineStyle,:);); uimenu(hls,Label,实线,Call,set(hl,LineStyle,-);); uimenu(hlw,Lab
8、el,加宽,Call,set(hl,LineWidth,2);); uimenu(hlw,Label,变细,Call,set(hl,LineWidth,0.5);); set(hl,UIContextMenu,hc); %将该快捷菜单和曲线对象联系起来目录目录7.2 对话框设计7.2.1 对话框的控件 (1)按钮(Push Button)。 (2)双位按钮(Toggle Button)。 (3)单选按钮(Radio Button)。 (4)复选框(Check Box)。 (5)列表框(List Box)。 (6)弹出框(Popup Menu)。 (7)编辑框(Edit Box)。 (8)滑动条
9、(Slider)。 (9)静态文本(Static Text)。 (10)边框(Frame)。目录目录 7.2.2 对话框的设计 1. 建立控件对象 MATLAB提供了用于建立控件对象的函数uicontrol,其调用格式为: 对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,) 其中各个属性名及可取的值和前面介绍的uimenu函数相似,但也不尽相同,下面将介绍一些常用的属性。 2. 控件对象的属性 MATLAB的10种控件对象使用相同的属性类型,但是这些属性对于不同类型的控件对象,其含义不尽相同。除Children、Parent、Tag、Type、UserDat
10、a、Visible等公共属性外,还有一些常用的特殊属性。目录目录例7.3 建立数制转换对话框。在左边输入一个十进制整数和216之间的数,单击“转换”按钮能在右边得到十进制数所对应的216进制字符串,单击“退出”按钮退出对话框。 程序如下: hf=figure(Color,0,1,1,Position,100,200,400,200,. Name,数制转换,NumberTitle,off,MenuBar,none); uicontrol(hf,Style,Text, Units,normalized,. Position,0.05,0.8,0.45,0.1,Horizontal,center,.
11、 String,输 入 框,Back,0,1,1); uicontrol(hf,Style,Text,Position,0.5,0.8,0.45,0.1,. Units,normalized,Horizontal,center,. String,输 出 框,Back,0,1,1); uicontrol(hf,Style,Frame,Position,0.04,0.33,0.45,0.45,. Units,normalized,Back,1,1,0); uicontrol(hf,Style,Text,Position,0.05,0.6,0.25,0.1,. Units,normalized,Ho
12、rizontal,center,. String,十进制数,Back,1,1,0); uicontrol(hf,Style,Text,Position,0.05,0.4,0.25,0.1,. Units,normalized,Horizontal,center,. String,216进制,Back,1,1,0); he1=uicontrol(hf,Style,Edit,Position,0.25,0.6,0.2,0.1,. Units,normalized,Back,0,1,0); he2=uicontrol(hf,Style,Edit,Position,0.25,0.4,0.2,0.1,.
13、 Units,normalized,Back,0,1,0); uicontrol(hf,Style,Frame,Position,0.52,0.33,0.45,0.45,. Units,normalized,Back,1,1,0); ht=uicontrol(hf,Style,Text,Position,0.6,0.5,0.3,0.1,. Units,normalized,Horizontal,center,Back,0,1,0); COMM=n=str2num(get(he1,String);,b=str2num(get(he2,String);,. dec=trdec(n,b);,set(
14、ht,string,dec); uicontrol(hf,Style,Push,Position,0.18,0.1,0.2,0.12,. String,转 换,Units,normalized,Call,COMM); uicontrol(hf,Style,Push,Position,0.65,0.1,0.2,0.12,. String,退 出,Units,normalized,Call,close(hf);目录目录程序调用了trdec.m函数文件,该函数的作用是将任意十进制整数转换为216进制字符串。trdec.m函数文件如下: function dec=trdec(n,b) ch1=0123
15、456789ABCDEF; %十六进制的16个符号 k=1; while n=0 %不断除某进制基数取余直到商为0 p(k)=rem(n,b); n=fix(n/b); k=k+1; end k=k-1; strdec=; while k=1 %形成某进制数的字符串 kb=p(k); strdec=strcat(strdec,ch1(kb+1:kb+1); k=k-1; enddec=strdec;目录目录例7.4 建立图形演示对话框。在编辑框输入绘图命令,单击“绘图”按钮能在左边坐标轴得到所对应的图形,弹出框提供色图控制,列表框提供坐标网格线和坐标边框控制。 程序如下: clf; set(g
16、cf,Unit,normalized,Position,0.2,0.3,0.65,0.35); set(gcf,Menubar,none,Name,图形演示,NumberTitle,off); axes(Position,0.05,0.15,0.55,0.7); uicontrol(gcf,Style,text, Unit,normalized,. Posi,0.63,0.85,0.2,0.1,String,输入绘图命令,Horizontal,center); hedit=uicontrol(gcf,Style,edit,Unit,normalized,Posi,0.63,0.15,0.2,0
17、.68,. Max,2); %Max取2,使Max-Min1,从而允许多行输入 hpopup=uicontrol(gcf,Style,popup,Unit,normalized,. Posi,0.85,0.8,0.15,0.15,String,Spring|Summer|Autumn|Winter); hlist=uicontrol(gcf,Style,list,Unit,normalized,. Posi,0.85,0.55,0.15,0.25,String,Grid on|Grid off|Box on|Box off); hpush1=uicontrol(gcf,Style,push,U
18、nit,normalized,. Posi,0.85,0.35,0.15,0.15,String,绘 图); uicontrol(gcf,Style,push,Unit,normalized,. Posi,0.85,0.15,0.15,0.15,String,关 闭,Call,close all); set(hpush1,Call,COMM(hedit,hpopup,hlist); set(hlist,Call,COMM(hedit,hpopup,hlist); set(hpopup,Call,COMM(hedit,hpopup,hlist);COMM.m函数文件: function COMM
19、(hedit,hpopup,hlist) com=get(hedit,String); n1=get(hpopup,Value); n2=get(hlist,Value); if isempty(com) %编辑框输入非空时 eval(com); %执行从编辑框输入的命令 chpop=spring,summer,autumn,winter; chlist=grid on,grid off,box on,box off; colormap(eval(chpopn1); eval(chlistn2); end目录目录7.3 用户界面设计工具 7.3.1 图形界面控制面板 7.3.2 属性编辑器 7
20、.3.3 事件过程编辑器 7.3.4 菜单编辑器 7.4.5 位置调整工具目录目录 例7.5 利用界面设计工具设计用户界面。具体要求是: (1)在编辑框输入形成数据z的命令,然后选择三个按钮中的一个,即可绘制出z的图形。 (2)选择弹出框中的某个色图,能及时地更改绘图的颜色。 (3)在图形窗口缺省的菜单条上添加一个菜单项Options,Options下又有两个子菜单项White和Red,选中White项时,图形窗口将变成白色,选中Red项时,图形窗口将变成红色。 操作步骤如下: (1)打开图形界面控制面板,添加有关图形对象。 (2)利用属性编辑器,设置图形对象的属性。 (3)添加Options
21、菜单项。目录目录第8章 MATLAB笔记本8.1 笔记本的安装及启动8.2 输入单元的定义与执行8.3 计算区的定义与执行8.4 输出格式控制8.5 Notebook菜单的其他命令8.6 M-book模板样式的修改目录目录8.1 笔记本的安装及启动8.1.1 笔记本的安装在MATLAB命令窗口输入:notebook -setup8.1.2笔记本的启动1.从Word中启动笔记本2.从MATLAB中启动笔记本目录目录8.1.3 MATLAB笔记本的界面MATLAB笔记本的界面和通常的Word界面主要有两点区别:(1)在菜单栏中多了一个Notebook菜单项,笔记本的许多操作都可以通过该菜单项的命令
22、来完成。(2)在“文件”菜单项下多了一个New M-book命令项。如果在M-book模板下要建立新的M-book文档,可以选择该命令。目录目录8.2输入单元的定义与执行8.2.1基本操作1.输入单元的定义首先选中所需命令,然后在Notebook菜单项中选择Define Input Cell命令,于是被选中的MATLAB命令成为输入单元。也可以在选中所需命令后,直接按组合键Alt+D。2.输入单元的执行选择Notebook菜单项中的Evaluate Cell命令或直接按组合键Ctrl+Enter。3.输出单元 输入单元执行后产生输出单元。目录目录例8.1定义并执行输入单元。操作步骤如下:(1)
23、在文档中输入MATLAB命令。(2)选中命令行,在Notebook菜单项中选Define Input Cell命令或直接按组合键Alt+D,于是命令行就变成了“绿色”的输入单元。 (3)若要把输入单元送去执行,则可用Notebook菜单项中的Evaluate Cell命令或直接按组合键Ctrl+Enter,执行后产生“蓝色”的输出单元: 目录目录4.输入单元定义与执行同时进行 先选中MATLAB命令,然后从Notebook菜单项中选择Evaluate Cell命令或直接按组合键Ctrl+Enter,不但使被选中的命令成为输入单元,而且送去执行,产生输出单元。例8.2输入单元定义与执行同时进行。
24、在英文状态下,以文本方式键入命令,然后选中命令并按Ctrl+Enter键,则得到输入、输出单元。目录目录8.2.2 自初始化单元及其应用1.自初始化单元选择Notebook菜单中的Define AutoInit Cell命令即可。2.自初始化单元的应用目录目录8.2.3单元群及其应用1.单元群单元群(Cell Group)是多行输入单元或自初始化单元组成的一个整体。2.单元群的应用单元群的用途主要有两个:(1)为保证MATLAB命令结构(如循环结构、条件结构)的完整。(2)为保证输出结果(如图形)的完整。目录目录8.2.4单元的循环执行利用Notebook菜单中的Evaluate Loop命令
25、可实现单元的循环执行。目录目录8.3 计算区的定义与执行定义计算区的方法是:先选定包含普通Word文本、输入单元和输出单元的一个连续区,然后选择Notebook菜单中的Define Calc Zone命令。一旦计算区被定义后,不管光标在计算区的什么位置,只要选择Notebook菜单中的Evaluate Calc Zone命令即可执行计算区中的全部输入单元,且在每个输入单元后面以输出单元形式给出相应的计算结果。目录目录8.4 输出格式控制可以通过Notebook菜单中的Notebook Options命令来实现。选择该命令后,会弹出输出格式控制对话框,以后的操作都是针对该对话框进行。目录目录8.
26、4.1 输出数据格式控制1.输出数据的表示方式2.输出数据间的空行控制 8.4.2 输出图形格式控制利用输出格式控制对话框,也可以实现对输出图形的控制。1.图形镶嵌的控制2.曲面图色彩控制3.图形背景色的控制4.图形大小的控制目录目录8.5 Notebook菜单的其他命令8.5.1整个M-book文档输入单元的执行Notebook菜单项中的Evaluate M-book命令可以把整个M-book文档中的所有输入单元送到MATLAB中去执行。不管光标处于文档的什么位置,执行总是从文档首部开始。8.5.2删去M-book文档中所有输出单元Notebook菜单项中的Purge Output Cell
27、s命令可以删去M-book文档中所有输出单元。目录目录8.5.3单元转化为文本选定单元,再选择Notebook菜单中的Undefine Cells命令。或将光标置于单元之中,按组合键AltU。当某输入单元或单元群被转化为文本时,与之相应的输出单元也被自动转化为文本。目录目录8.6 M-book模板样式的修改同其他Word模板一样,用户既可以修改M-book模板原有样式,也可以加入新样式。例如,现有的M-book模板中,输入单元是绿色的,输出单元和自初始化单元是蓝色的,错误单元是红色的。现在可以把输出单元的颜色变为黑色。目录目录第9章 MATLAB环境下的仿真软件Simulink9.1 Simu
28、link的基本操作9.2 Simulink的几类基本模块9.3 仿真模型参数的设置9.4 子系统的建立与封装9.5 在命令窗口中创建模型9.6 S-函数的设计和应用9.7 仿真系统的线性化分析目录目录9.1 Simulink的基本操作9.1.1 Simulink的启动与退出 1. Simulink的启动 启动Simulink的方法有3种: (1)在MATLAB的命令窗口直接键入simulink。 (2)单击MATLAB命令窗口工具栏上的Simulink模块库浏览器命令按钮。 (3)在MATLAB命令窗口File菜单中选择New菜单项下的Model命令。2. Simulink的退出 为了退出Si
29、mulink,只要关闭所有模型窗口和Simulink模块库窗口即可。目录目录 9.1.2 Simulink模块的操作1. 选取模块2. 复制与删除模块3. 模块的参数和属性设置4. 模块外形的调整 5. 模块名的处理6. 模块的连接7. 在连线上反映信息。目录目录9.2 Simulink的几类基本模块9.3 仿真模型参数的设置9.3.1 通过菜单命令设置仿真模型参数 选择模型窗口Simulation菜单中的Parameter命令,将出现仿真参数对话框。对话框分四个选项卡:Solver(算法)、Workspace I/O(工作空间输入输出)、Diagnostics(诊断)和Real-Time W
30、orkshop(实时工作间)。目录目录 9.3.2 在命令窗口调用函数设置仿真模型参数1. sim 函数 其调用格式为: t, x, y =sim(modname,timespan,options,data);2. simset函数 它有如下4种用法: (1)options=simset(property,value,) (2)options=simset(old_opstruct,property,value,) (3)options=simset(old_opstruct,new_opstruct) (4)simset目录目录 例9.1以图9.15所示的仿真模型为例,说明simset函数的
31、用法。(1)在命令窗口输入命令:option=simset(OutputVariables,x,OutputPoints,all,FinalstateName,date);t,x,y=sim(mode1,1,10,option)(2)在命令窗口中输命令:optionl=simset(OutputVariables,xy,OutputPoints,all);t,x,y=sim(Simul,2,4,6,8,option1);目录目录 3. simget函数该函数有如下3种用法:(1)struct=simget(model) (2)value=simget(model,property) (3)va
32、lue=simget(Option,Structure,property)4.set_param函数(1)设置仿真参数调用格式为:set_param(mode,property,value,)(2)控制仿真进程调用格式为:set_param(mode,SimulationCommand,cmd)目录目录 例9.2 假设从实际应用领域(力学、电学、生态或社会)中,抽象出有初始状态为0的二阶微分方程x+0.2x+0.4x=0.2u (t), u(t)是单位阶跃函数。用 积 分 器 直 接 构 造 求 解 微 分 方 程 的 模 型exm1.mdl。 步骤如下:(1)改写微分方程。把原方程改写为:x
33、=0.2u(t)-0.2x-0.4x(2)利用Simulink模块库中的标准模块构作模型。 (3)仿真操作。(4)保存在MATLAB工作空间中的数据。目录目录 例9.3利用传递函数模块建模。 步骤如下:(1)根据系统传递函数构造系统模型(2)仿真操作。例9.4利用状态方程模块建模。(1)利用构造仿真模型(2)仿真目录目录9.4 子系统的建立与封装 9.4.1 子系统的建立1. 通过Subsystem模块建立子系统操作步骤为:(1)先打开Simulink模块库浏览器,新建一个仿真模型。(2)打开Simulink模块库中的Signals & Systems模块库,复制Subsystem模块到新的模
34、型窗口中。(3)用鼠标左键双击Subsystem模块打开一个空白的Subsystem窗口,将要组合的模块添加到该窗口中,另外还要根据需要复制一个或多个Input和Output模块,表示子系统的输入和输出端口。这样,一个子系统就建好了。目录目录 2. 通过已有的模块建立子系统操作步骤为:(1)先选择要建立子系统的模块,不包括输入端口和输出端口。(2)选择模型窗口Edit菜单中的Create Subsystem 命令,这样,子系统就建好了。在这种情况下,系统会自动把Input模块和Output模块添加到子系统中,并把原来的模块变为子系统的图标。目录目录9.4.2 子系统的条件执行1. 使能子系统建
35、立使能子系统的方法是:打开Simulink模块库中的Signals & Systems模块库,将Enable模块复制到子系统模型中,则系统的图标发生了变化。目录目录例9.5利用使能原理构成一个正弦半波整流器。操作步骤如下:(1)打开Simulink模块库浏览器以及新建一个模型窗口。(2)双击空子系统模块Subsystem,打开其结构模型窗。(3)将Simulink浏览库中的In输入口模块、Out输出口模块、Enable使能模块拖至子系统的结构模型窗;把In模块的输出直接送到Out模块的输入端;Enable模块无须进行任何连接,且采用它的缺省设置实现题目所需使能子系统。(4)完成新建模型窗口中各
36、模块间的连接并存盘。(5)双击示波器模块,打开显示窗。然后选择Simulink菜单中的Start命令,就可看到半波整流波形。目录目录2. 触发子系统触发子系统是指当触发事件发生时开始执行子系统。与使能子系统相类似,触发子系统的建立要把Signals & Systems模块库中的Trigger模块拷贝到子系统中。目录目录例9.6 利用触发子系统原理将一锯齿波转换成方波。操作步骤如下:(1)用Signal Generator、Subsystem和Scope模块构成一子系统,双击Signal Generator模块图标在Wave from的下拉列表框中选择sawtooth,即锯齿波。(2)将上例中的
37、Enable模块换成Trigger触发模块。双击该模块并选Trigger type触发事件形式为either,即上跳沿或下跳没触发。(3)完成新建模型窗口中各模块间的连接,并存盘。(4)双击示波器模块,然后选择Simulink菜单中的start命令,就可看到方波。目录目录 3. 使能加触发子系统所谓使能加触发子系统就是把Enable和Tirgger模块都加到子系统中,使能控制信号和触发控制信号共同作用子系统的执行,也就是前两种子系统的综合。该系统的行为方式与触发子系统相似,但只有当使能信号为正时,触发事件才起作用。 目录目录 9.4.3 子系统的封装 子系统的封装过程很简单:先选中所要封装的子
38、系统,再选择模型窗口Edit菜单中的Mask Subsystem命令,这时将出现Mask Editor对话框。Mask Editor对话框中共包括3个选项卡:Icon、Initialization和Documentation。子系统的封装主要就是对这3页参数进行设置。目录目录9.5 在命令窗口中创建模型9.5.1 构造模型的命令9.5.2 设置参数目录目录9.6 S-函数的设计和应用9.6.1 S-函数概述9.6.2 用M文件编写S-函数(1)MATLAB5.3为用户提供了一个模板,只要在必要的子程序里编写代码并输入参数就可以了。(2)从Function & Tables子库里把S-Funct
39、ion系统的功能模块复制过来,输入程序的文件名,以供调用。目录目录 例9.7利用M文件来写一个限幅积分器的S-函数,并借助S-函数模块来调用此文件。限幅积分器的数学模型如下:操作步骤如下:(1)根据数学模型,编写S-函数sfun97.m。function sys, x0, str, ts = sfun97(t, x, u, flag, lb, ub, xi)switch flag,case 0, sys, x0, srt, ts = mdlInitializeSizes(xi);case 1, sys = mdlDerivatives(t, x, u, lb, ub);case 2 , sys
40、 = mdlUpdate(t, x, u);case 3, sys = mdlOutputs(t, x, u);case 4, sys = mdlGetTimeOfNextVarHit(t, x, u);case 9,sys = mdlTerminate (t , x , u); otherwiseerror ( Unhandled flag = ,num2str ( flag) );endfunction sys,x0,str,ts=mdlInitializeSizes(xi)sizes =simsizes; sizes.NumContStates=1; sizes.NumDiscState
41、s=0;sizes.NumOutputs=1; sizes.NumInputs=1; sizes.DirFeedthrough=0;sizes.NumSampleTimes=1; sys=simsizes(sizes); xo=xi; str= ;ts=0, 0; function sys=mdlDerivatives(t,x,u,lb,ub)if(x=lb&u=ub&u0)sys=0;else sys=u;endfunction sys=mdIUpdae(t,x,u)sys= ;function sys=mdIOutputs(t,x,u)sys=x;function sys=mdlGetTi
42、meOfNextVarHit(t,x,u)sampleTime=1;% Example,set the next hit to be one second latersys=t+ sampleTime;function sys=mdlTerminate(t,x,u)sys = ; 目录目录(2)完成S-函数的编写后,接着建立 Simulink模型,将功能模块S-function复制到设计区域,打开其参数页,输入S-函数的文件名sfun97.m和S-函数的参数lb、ub、xi。(3)编写主程序。clear;lb=-0.5;ub=0.5;xi=0;sim(sfun97);(4)在命令窗口运行主程序
43、,并双击示波器,即可查看到输入波形及限幅积分的结果。目录目录9.7 仿真系统的线性化分析9.7.1 连续系统的线性化线性化分析函数linmod用来提取非线性系统的近似线性模型,也可以用来获取线性系统的数学模型。linmod函数的调用格式为:A,B,C,D=linmod (sys)A,B,C,D=linmod (sys, x ,u)A,B,C,D=linmod (sys, x, u, pert)A,B,C,D=linmod (sys, x, u, pert, xpert, upert)目录目录9.7.2离散系统的线性化 dlinmod能够以任意给定的采样时间对离散系统、多速率系统以及连续和离散混
44、合系统进行线性化。除了第2个选项需要插入采样时间来对系统线性化外,dlinmod的调用格式和linmod是相同的:A,B,C,D=dlinmod (sys, Ts, x ,u)目录目录9.7.4 平衡分析在给定输入、输出及状态条件下,Simulink提供的函数trim可以用来确定系统的稳态平衡点。其调用格式为:x,u,y,dx=trim(sys)x,u,y,dx=trim(sys,x0,u0,y0,ix,iu,iy)其中x,u,y,dx分别代表状态向量、输入向量、输出向量和状态向量的导数。sys是模型名。x0,u0,y0分别为状态向量x、输入向量u和输出向量y的初始猜测值,它们的输入格式必须是
45、列向量形式。ix是向量,它的元素是那些在寻找过程中,要求保持其值固定不变(等于初始猜测值)的那些状态变量的序号。iu、iy与ix类似,分别适用于u和y。目录目录MATLAB使用注意项 101 脚本文件和函数文件脚本文件和函数文件102 函数调用和参数传递函数调用和参数传递103 M文件的调试文件的调试10. 4 环境设置环境设置 10. 5 MATLAB使用中的常用命令使用中的常用命令目录目录101 脚本文件和函数文件脚本文件和函数文件1011 M脚本文件脚本文件 对于一些比较简单的问题对于一些比较简单的问题 ,在指令窗中直接输入指令计算,在指令窗中直接输入指令计算 。 对于复杂计算,采用脚本
46、文件(对于复杂计算,采用脚本文件(Script file)最为合适)最为合适 。 MATLAB只是按文件所写的指令执行只是按文件所写的指令执行 。 M脚本文件的特点是:脚本文件的特点是: 脚本文件的构成比较简单,只是一串按用户意图排列而成脚本文件的构成比较简单,只是一串按用户意图排列而成的(包括控制流向指令在内的)的(包括控制流向指令在内的)MATLAB指令集合。指令集合。 脚本文件运行后脚本文件运行后 ,所产生的所有变量都驻留在,所产生的所有变量都驻留在 MATLAB基本工作空间基本工作空间(Base workspace)中。只要用户不使用清除)中。只要用户不使用清除指令(指令(clear)
47、,), MATLAB指令窗不关闭,这些变量将一直指令窗不关闭,这些变量将一直保存在保存在基本工作空间基本工作空间中。中。M文件有两种形式文件有两种形式 :脚本文件(脚本文件(Script File)和函数文件和函数文件(Function File )。这两种文件的扩展名,均为)。这两种文件的扩展名,均为“ . m” 。目录目录1012 M函数文件函数文件 与脚本文件不同与脚本文件不同 ,函数文件犹如一个,函数文件犹如一个“黑箱黑箱”,把一些数据,把一些数据送进并经加工处理,再把结果送出来。送进并经加工处理,再把结果送出来。 MATLAB提供的函数指令大部分都是由函数文件定义的。提供的函数指令大
48、部分都是由函数文件定义的。 M函数文件的特点是:函数文件的特点是: 从形式上看从形式上看 ,与脚本文件不同,与脚本文件不同 ,函数文件的笫一行总是,函数文件的笫一行总是以以 “function”引导的引导的“函数申明行函数申明行”。从运行上看从运行上看 ,与脚本文件运行不同,与脚本文件运行不同 ,每当函数文件运行,每当函数文件运行, MATLAB就会专门为它开辟一个临时工作空间,称为就会专门为它开辟一个临时工作空间,称为函数函数工作空间工作空间( Function workspace) 。当执行文件最后一条。当执行文件最后一条指令时指令时 ,就结束该函数文件的运行,同时该临时函数空间,就结束该
49、函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。及其所有的中间变量就立即被清除。 MATLAB允许使用比允许使用比 “标称数目标称数目 ”较少的输入输出宗量,较少的输入输出宗量,实现对函数的调用实现对函数的调用 。目录目录1013 M文件的一般结构文件的一般结构 由于从结构上看由于从结构上看 ,脚本文件只是比函数文件少一个,脚本文件只是比函数文件少一个“函数申函数申明行明行”,所以只须描述清楚函数文件的结构,所以只须描述清楚函数文件的结构 。 典型典型 M函数文件的结构如下函数文件的结构如下 : 函数申明行:位于函数文件的首行,以关键字函数申明行:位于函数文件的首行,以关键字
50、 functio 开头,开头,函数名以及函数的输入输出宗量都在这一行被定义。函数名以及函数的输入输出宗量都在这一行被定义。 笫一注释行:紧随函数申明行之后以笫一注释行:紧随函数申明行之后以%开头笫一注释行。开头笫一注释行。该行供该行供lookfor关键词查询和关键词查询和 help在线帮助使用在线帮助使用 。 在线帮助文本区在线帮助文本区 :笫一注释行及其之后的连续以:笫一注释行及其之后的连续以%开头的开头的所有注释行构成整个在线帮助文本。所有注释行构成整个在线帮助文本。 编写和修改记录:与在线帮助文本区相隔一个编写和修改记录:与在线帮助文本区相隔一个“空空”行,行,也以也以%开头,标志编写及