版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MATLAB与控制系统仿真实践, 北京航空航天大学出版社,2009.8. 在线交流,有问必答,MATLAB 与控制系统仿真实践,第6章 MATLAB GUI程序设计初步,引言,MATLAB的GUI程序设计可以用两种方式实现,一种是借助GUI开发工具GUIDE,一种是利用m文件代码构建界面。采用GUIDE进行设计的方法所见即所得,直观方便,很容易上手。 本章主要介绍利用GUIDE方法进行设计的步骤。有兴趣的用户可以进一步了解学习全部利用m文件代码构建界面及执行程序的方法。,MATLAB与控制系统仿真实践,,本章主要内容,6.1 GUI设计工具Guide简介 6.1.1 GUIDE的启动 6.1.
2、2 GUI界面的创建 6.2 GUI程序设计示例 6.2.1“Hello World”程序的设计 6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,MATLAB与控制系统仿真实践,,MATLAB与控制系统仿真实践, 北京航空航天大学出版社,2009.8. 在线交流,有问必答,6.1 GUI设计工具Guide简介,MATLAB提供了用户图形界面开发程序GUIDE,支持可视化编辑。 它是一种基于事件或者说是事件驱动的程序(event driven),类似于方便易用的Visual Basic。,MATLAB与控制系统仿真实践,,6.1.1 GUIDE的启动,可以如下不同方式启动GUID
3、E: 1. 在命令窗口提示符下输入guide; 2. 在工具栏选打开; 3. 在Start菜单中选MATLAB GUIDE (GUI Builder); 4. MATLAB File 菜单中选New GUI。,MATLAB与控制系统仿真实践,,6.1.1 GUIDE的启动,以上面任一种方式打开GUIDE后,即下图的启动界面。,GUIDE启动界面,MATLAB与控制系统仿真实践,,6.1.2 GUI界面的创建,用户创建新的GUI,也可打开已有的GUI。创建界面时还可在模板基础上进行,在选择GUI模板时,启动界面右侧提供了预览。,以“GUI with axes and menu”模板创建的GUI初
4、始界面。,MATLAB与控制系统仿真实践,,MATLAB与控制系统仿真实践, 北京航空航天大学出版社,2009.8. 在线交流,有问必答,6.2 GUI程序设计示例,概述,本节通过2个示例,演示MATLAB的GUI程序设计。 一个是“Hello World”程序,作为初步了解。 一个用来演示控制系统传递函数典型环节的响应曲线,具有一定实用性。,MATLAB与控制系统仿真实践,,6.2.1“Hello World”程序的设计,下面以一个类似于学习其它程序设计的第一个程序“Hello World”为例,讲解GUIDE的有关知识。 程序的目标是当按下按钮时,由文本控件显示“Hello World”。
5、,MATLAB与控制系统仿真实践,,显示控件名称 的设置界面,对界面左侧的控件如果不够熟悉的话,可以通过FilePreferences选项,选中“Show names in component palette”,MATLAB与控制系统仿真实践,,GUI设计界面在显示控制图标的同时,还显示控件名称,GUI设计界面,MATLAB与控制系统仿真实践,,6.2.1“Hello World”程序的设计,1. “Hello World”程序界面设计 2. “Hello World”程序的设计 3. 程序测试运行,MATLAB与控制系统仿真实践,,6.2.1“Hello World”程序的设计 1. “He
6、llo World”程序界面设计,GUI设计中的界面设计部分比较容易。在窗口上添加一个按钮控件(Push Button)和一个文本控件(Static Text)。可以双击控件调出属性编辑器进行其属性的设置。,MATLAB与控制系统仿真实践,,本例中,设按钮控件的“String”属性为“问候”,“Tag”属性为“helloBt”,见右图,按钮属性设置,MATLAB与控制系统仿真实践,,设置文本控件的“String”属性为空,表示初始状态下不显示任何信息,“Tag”属性为“helloStr”,为显示清楚,设其“FontSize”属性为“28”。见右图,文本控件属性设置,MATLAB与控制系统仿真实
7、践,,6.2.1“Hello World”程序的设计 1. “Hello World”程序界面设计,需要注意的是,“Tag”属性设置要唯一,因为“Tag”属性是唯一标识控件的。 至此,我们的界面设计工作完成。在保存时,会生成2个文件,一个是helloworld.fig,一个是helloworld.m。,MATLAB与控制系统仿真实践,,6.2.1“Hello World”程序的设计 1. “Hello World”程序界面设计,此外可通过ToolsMenu Editor进行类似于Windows程序的菜单设计。编辑窗口见左图,效果见右图。,菜单设计的编辑窗口,菜单效果图,MATLAB与控制系统仿
8、真实践,,6.2.1“Hello World”程序的设计 2. “Hello World”程序的设计,按照要求,我们可以给按钮添加动作,即给它编写一个回调函数(Callback)。 右键单击按钮,选择View CallbacksCallback自动打开helloworld.m文件并指向该回调函数。 根据需要为其添加语句。程序将句柄集handles的helloStr(即文本控件)“String”属性设置为“Hello World”,即完成了设计要求。,MATLAB与控制系统仿真实践,,6.2.1“Hello World”程序的设计 2. “Hello World”程序的设计,下面这段程序的意思是
9、当点击按钮时,即由程序设置文本控件的“String”属性值为“Hello World”。 function helloBt_Callback(hObject, eventdata, handles) set(handles.helloStr,String,Hello World !);,MATLAB与控制系统仿真实践,,6.2.1“Hello World”程序的设计 2. “Hello World”程序的设计,注意回调函数的概念,它指的是在对象的某一个事件发生时,MATLAB内部机制允许自动调用的函数。 其几个参数的意思分别为 hObject表示当前窗口的句柄; eventdata表示事件代码
10、,为保留 handles是该窗口中的所有句柄的集合。 回调函数有的是针对窗口而言的,有的是对具体控件而言的,学会回调函数的编写有助于高效编写MATLAB GUI程序,MATLAB与控制系统仿真实践,,6.2.1“Hello World”程序的设计 3. 程序测试运行,在程序编辑窗口运行测试,或在命令窗口键入程序名称“helloworld”,即可运行。如下图:,helloworld程序运行界面,MATLAB与控制系统仿真实践,,6.2.1“Hello World”程序的设计 3. 程序测试运行,注意: 当不小心将helloworld.fig关掉后,再次编辑需要重新打开。其方法可以通过FileNe
11、wGUIOpen Existing GUI来打开。 如按照一般理解选择FileOpen项的话,只能打开其运行窗口而不可编辑。,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,1.程序功能描述 2.程序界面设计 3.程序代码设计 4.程序测试运行,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,1.程序功能描述 进行控制系统典型环节的演示,包括了典型环节运行效果的演示与代码的展示。也可以在代码区输入绘制曲线语句并通过点击定制曲线按钮绘制曲线。,MATLAB与控制系统仿真实践,,6.2.2 一个实用
12、的GUI设计示例控制系统典型环节的演示程序,2.程序界面设计 根据程序功能要求,添加不同控件,并设置控件各自的属性。 (1) Axes控件作用为显示图形,典型环节的阶跃响应曲线及定制曲线都在此处进行显示。“Tag”属性设为myAxes。 (2) Panel控件用来盛放其它控件,这里盛放的是代码区。“Tag”属性设为uipanel。“Title”属性设为空。,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,(3) Edit Text控件用于输入和显示文本。此处作为代码区,主要作用为展示典型环节的代码、输入用户定制的曲线代码。 “Tag”属性设为:
13、 strCode。 “String”属性设为: Please input command for example: x=0:0.1:4*pi; y=sin(x); 这为用户定制曲线提供了一个例程。,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,(4) Static Text控件作为标识,提示位于其下方的ListBox控件选项是进行典型环节的演示的。“Tag”属性设为txtDemo,“String”属性设为典型环节演示。 (5) ListBox控件类似于一组复选框,用户可以从中选择不同选项。 “Tag”属性设为: lstBox “String”
14、属性设为: 比例环节 惯性环节 比例微分环节 比例积分环节,表示此列表共有4项内容即4个典型环节可选。,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,(6) Push Button控件表现为一个按钮。本例中使用了两个此控件。 一个用于定制曲线的绘制。用户在代码区输入绘制曲线语句后,点击此按钮进行曲线的绘制。“Tag”属性设为btnDraw,“String”属性设为定制曲线,“TooltipString”属性设为在代码区中输入曲线参数,绘制任意曲线。这样当用户将光标置于按钮之上时,会有相应的提示信息。 一个用于关闭运行窗口。“Tag”属性设为b
15、tnClose,“String” 属性设为关闭,“TooltipString”属性设为关闭窗口。,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,设定完成的界面草图如右图,程序界面设计草图,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,至此,本例所需的控件已设置完毕。在最初按照草图添加部署了所有的控件后,往往不会排列得很整齐。此时可根据需要进行控件的排列。,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,如在本例中,要将位于窗口右侧的4个控件竖
16、排整齐,则可在窗口选ToolAlign Objects弹出的窗口中进行选择,如图。,界面控件布局设置,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,3.程序代码设计 根据要求,在选择典型环节时需要设置回调函数。此外,对两个按钮控件也要设置回调函数。 回调函数的生成在前一个例子已讲过,这里不重复。这里只给出相应的代码段供参考。,MATLAB与控制系统仿真实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,(1) 定制曲线按钮的回调函数 function btnDraw_Callback(hObject, eventdata,
17、 handles) try str=char(get(handles.strCode,String);%将在代码区输入的代码转换成数组 str0=; for ii=1:size(str,1) %对str的每行操作 str0=str0,deblank(str(ii,:); %将str第ii行去掉空格后作为向量str0的一个元素 end eval(str0);%执行代码 axes(handles.myAxes);%将myAxes设为当前坐标系 plot(x,y); %绘制曲线 catch errordlg(请重新检查输入数据!); %如有数据错误,捕获并给出提示 end,MATLAB与控制系统仿真
18、实践,,6.2.2 一个实用的GUI设计示例控制系统典型环节的演示程序,(2) 典型环节列表框的回调函数 function lstBox_Callback(hObject, eventdata, handles) v=get(handles.lstBox,value); %取出所选项的值 %对不同选项,进行对应环节曲线的绘制和代码的展示 switch v case 1, %比例环节 str1=nump=3;denp=1; %绘制比例环节曲线的代码 str2=t=0:0.1:10; str3=y,t,x=step(nump,denp,t); % 将代码作为数组赋值给代码区的String属性,即展
19、示代码 set(handles.strCode,String,char(str1,str2,str3); % 将所选环节名称显示在panel控件上 set(handles.uipanel,Title,比例环节); case 2, %惯性环节 str1=numg=1;deng=0.2 1; str2=t=0:0.1:10; str3=y,t,x=step(numg,deng,t); set(handles.strCode,String,char(str1,str2,str3); set(handles.uipanel,Title,惯性环节),MATLAB与控制系统仿真实践,,6.2.2 一个实用
20、的GUI设计示例控制系统典型环节的演示程序,case 3, %比例微分 str1=K=2;T=0.1;N=5;numpd=K*T K;denpd=T/N 1; str2=t=0:0.1:10; str3=y,t,x=step(numpd,denpd,t); set(handles.strCode,String,char(str1,str2,str3); set(handles.uipanel,Title,比例微分环节); case 4, %比例积分 str1=K=4;T=0.2;numpi=K*T K;denpi=T 0; str2=t=0:0.1:10; str3=y,t,x=step(numpi,denpi,t); set(handles.strCode,String,char(str1,str2,str3); set(handles.uipanel,Title,比例积分环节); end % axes(handles.myAxes); %将myAxes设为当前坐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 日间宫腔镜手术中心设置及管理流程中国专家共识详解
- 2025年河北省石家庄市藁城区实验学校数学三下期中综合测试试题含答案解析
- 2025年河北省北京师范大学沧州渤海新区附属学校三年级数学下学期期中复习检测试题含答案
- 探秘科级选拔考试试题及答案
- 调试练习题及答案展示
- 职卫试题及答案深度剖析
- 设计制图进阶试题及准确答案
- 系统解读职场笔试题及答案
- 厨师基础考试题目与答案
- 企业业务热点试题及详细作答
- 《建设工程施工合同(示范文本)》(GF-2013-0201)
- 蓝天救援队规定管理制度
- 精酿啤酒培训课件
- 健康旅游学课件
- 过敏性休克的急救处理
- DB31/T 595-2021冷库单位产品能源消耗指标
- 《应急救援技能培训》课件
- 2025北京三支一扶真题
- 协助患者翻身扣背
- DB13-T 3035-2023 建筑消防设施维护保养技术规范
- 农作物植保员职业技能竞赛题库及答案
评论
0/150
提交评论