




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB仿真技术及应用,第七章图形用户界面GUI,主要内容,7.1概述7.2图形句柄入门7.3GUIDE工具入门7.4创建图形用户界面外观7.5图形用户界面编程,重点,掌握简单的图形用户界面设计方法,7.1概述,在MATLAB中创建图形用户界面的方法有两种图形句柄GUIDE都需要使用M语言编程。利用图形句柄创建的GUI只有一个M文件,而利用GUIDE创建的GUI由两个文件:M文件和外观文件fig文件。MATLAB提供了基本的用户界面元素,包括菜单、快捷菜单、按钮、复选框、单选框、文本编辑框、静态文本、下拉列表框、列表框等。需要注意的是,MATLAB的图形用户界面程序大多数是对话框应用程序。,7.2图形句柄入门,在MATLAB环境中每一个图形对象都有一个相应的句柄,,表7-1常用的图形句柄操作函数,例子7-1使用图形句柄。在MATLAB命令行窗口中,键入下面的指令:X=linspace(-pi,pi,25);Y=sin(X);plot(X,Y,rX);这时的图形结果为红色的以“X”为符号的正弦曲线,如图7-5所示。,图7-5绘制的原始图形,获取当前的曲线对象句柄:h_line=findobj(gca,Marker,X)h_line=3.0011获取整个曲线的属性列表:get(h_line)Color=100EraseMode=normal,LineStyle=noneLineWidth=0.5Marker=xMarkerSize=6MarkerEdgeColor=autoMarkerFaceColor=noneXData=(1by25)doublearrayYData=(1by25)doublearrayZData=BeingDeleted=offButtonDownFcn=Children=,Clipping=onCreateFcn=DeleteFcn=BusyAction=queueHandleVisibility=onHitTest=onInterruptible=onParent=101.001Selected=offSelectionHighlight=onTag=Type=lineUIContextMenu=UserData=Visible=on,设置曲线的属性:set(h_line,Color,111,MarkerSize,10);将曲线设置为白色,符号的大小设置为10设置坐标轴的属性:set(gca,Color,0,0,0)坐标轴的背景色成为黑色。,set(gca,XGrid,on,GridLineStyle,-.,XColor,0.750.750)set(gca,YGrid,on,GridLineStyle,-.,YColor,00.750.75)将坐标轴的网格线绘制了出来,使用了点划线,分别设置了不同的颜色。set(gcf,Color,001)将整个图形窗体的背景色设置为蓝色,效果如图7-6所示。,图7-6设置不同图形对象属性得到的结果,若需要修改MATLAB的默认属性,则使用下面的命令行:set(ancestor,Default,)其中,ancestor为某一层次的图形对象句柄。若在根层次设置了默认属性,则所有的对象都继承这个默认属性。若在轴层次设置默认属性,则轴层次以下的对象继承该默认属性。,例子7-2设置修改对象的默认属性。本例子使用的脚本文件内容如下:001%修改图形窗体默认背景色002set(0,DefaultFigureColor,111);003%修改默认的坐标轴背景色004set(0,DefaultAxesColor,000);005%修改坐标线的色彩006set(0,DefaultAxesXColor,0.500);007set(0,DefaultAxesYColor,0.500);,修改MATLAB的默认属性,008%修改文本的色彩009set(0,DefaultTextColor,00.50);010X=linspace(-pi,pi,25);011Y=sin(X);012plot(X,Y,yX);013gridon014title(ChangeTheDefaultProperties);015legend(sin);运行结果如图7-7所示。,图7-7修改默认属性值后的显示效果,如果希望将已经修改的默认属性值恢复成出厂设置,则可以使用下面的命令行:set(h,PropertyName,default)或者set(h,PropertyName,factory)set(h,PropertyName,remove),采用图形句柄设计图形用户界面,例7-3:制作一个能绘制二阶系统的单位阶跃响应曲线的图形用户界面。二阶系统的传递函数为。,H=axes(unit,normalized,position,0,0,1,1,visible,off);set(gcf,currentaxes,H);str=fontname隶书归一化二阶系统的阶跃响应曲线;text(0.12,0.93,str,fontsize,13);h_fig=get(H,parent);set(h_fig,unit,normalized,position,0.1,0.2,0.7,0.4);h_axes=axes(parent,h_fig,.unit,normalized,position,0.1,0.15,0.55,0.7,.xlim,015,ylim,01.8,fontsize,8);,h_text=uicontrol(h_fig,style,text,.unit,normalized,position,0.67,0.73,0.25,0.14,.horizontal,left,string,输入阻尼比系数,zeta=);h_edit=uicontrol(h_fig,style,edit,.unit,normalized,position,0.67,0.59,0.25,0.14,.horizontal,left,.callback,.z=str2num(get(gcbo,string);,.t=0:0.1:15;,.fork=1:length(z);,.y(:,k)=step(1,12*z(k)1,t);,.plot(t,y(:,k);,.if(length(z)1),holdon,end,.end;,holdoff,);,h_push1=uicontrol(h_fig,style,push,.unit,normalized,position,0.67,0.37,0.12,0.15,.string,gridon,callback,gridon);h_push2=uicontrol(h_fig,style,push,.unit,normalized,position,0.67,0.15,0.12,0.15,.string,gridoff,callback,gridoff);说明:step函数:画阶跃响应曲线y=step(num,den,t):其中num和den分别为系统传递函数描述中的分子和分母多项式系数,t为选定的仿真时间向量,可由t=0:step:end产生。函数返回值是系统在仿真时刻各个输出所组成的矩阵。,归一化二阶传递函数:,7.3GUIDE工具入门,使用图形句柄创建GUI的过程繁琐,而且在程序编写好之前,用户图形界面是不可见的。所以为了便于创建图形用户界面,MATLAB提供了一个开发环境,能够帮助用户创建图形用户界面,这就是GUIDEGraphicUserInterfaceDevelopmentEnvironment。在MATLAB中启动GUIDE的方法:guide或者通过“Start”菜单选择“MATLAB”下的“GUIDE”命令。,这时,将直接启动GUIDEQuickStart窗体,在这个窗体中,可以初步选择图形用户界面的类型,如图7-8所示。,图7-8GUIDE的快速启动界面,在快速启动界面中,可以选择四种类型的新建界面:*空白界面(BlackGUI)。*具有图形控件的界面(GUIWithUicontrols)。*具有菜单和坐标轴的界面(GUIWithAxesandMenu)。*模式对话框(ModalQuestionDialog)。,以空白界面类型为例,单击“OK”按钮,这时MATLAB将启动GUIDE的图形界面,如图7-9所示。,图7-9具有空白界面的GUIDE图形界面,在GUIDE界面的左侧为MATLAB的控件面板,控件面板包含了能够在画布上绘制的图形控件:(PushButton)、单选按钮(ToggleButton)、单选框(RadioButton)、复选框(Checkbox)、文本框(EditText)、静态文本框(StaticText)、滚动条(Slider)、组别框(Frame)、列表框(Listbox)、下拉框(PopupMenu)和坐标轴(Axes)。,图7-12GUIDE工具栏上的工具按钮,此外,在GUIDE的界面的工具栏上包含了一些常用的工具。,7.4创建图形用户界面外观,举例:用GUIDE创建图形用户界面。界面中包含一个坐标轴用来显示三维表面(surface);而且界面中包含两个按钮,用来绘制三维表面和修改颜色;通过几个文本框将颜色数值显示出来;通过滚动条修改三维表面的网格线色彩。在图形界面上有一个菜单,通过菜单命令可以清除当前坐标轴的内容。,图7-13图形用户界面的例子,利用GUIDE工具创建图形用户界面,在该图形用户界面中包含如下控件:*两个按钮(pushbutton),分别完成绘制三维曲面和改变色彩的功能;*五个静态文本框(statictext),分别用来完成显示不同信息的功能;*一个滚动条(slide),用来完成改变三维曲面上的分隔线色彩;*一个坐标轴(axes),用来显示三维曲面;*一个菜单(menu),用来完成清除坐标轴的功能。下面将详细介绍创建该图形用户界面的方法和步骤。,首先,进行界面设计。在这一过程中,需要对界面空间的布局、控件的大小等进行设计。然后,利用GUIDE的外观编辑功能,将必要的控件依次绘制在界面的“画布”上。在这一过程中,主要将所有控件摆放在合适的位置,并且设置控件合适的大小。第三步,设置控件的属性,这一步骤重点需要设置控件重要的属性值,例如控件的回调函数、标签和显示的文本等。第四步,针对不同的控件需要完成的功能进行M语言编程。,选择“Tools”菜单下的“GridandRulers”命令,在弹出的对话框中可以设置画布上网格线的尺寸,画布上的网格线可以帮助用户来设置控件的尺寸以及确定对齐控件的位置,所以需要选择合适的网格尺寸,默认的数值为50像素。,图7-15设置网格尺寸,将不同的控件绘制在画布上,如图7-16所示。选择四个静态文本框,单击GUIDE工具栏中的对齐工具按钮,在弹出的排列工具对话框中,分别选择垂直方向上均匀分布、水平方向上左边界对齐按钮,如图7-18所示。,图7-16放置图形用户界面的控件,图7-18对齐工具对话框,在界面之中还需要创建菜单,创建菜单可以通过菜单编辑器完成。单击工具栏上的菜单编辑器按钮,可以打开菜单编辑器对话框,在对话框中单击创建新菜单按钮,则可以创建新的菜单,设置菜单属性如图7-20所示。,图7-20创建菜单,设置菜单的Label属性和Tag属性。Tag属性将在后面编写界面应用程序时使用。再添加一个子菜单项,单击新建菜单项按钮,同样在菜单编辑器对话框中设置菜单项的Label属性和Tag属性分别为Done和ClearAxesDone。到现在,整个图形界面元素就基本上创建完毕了,这时可以单击GUIDE工具栏中的Run按钮,激活图形界面,如图7-21所示。,图7-21激活界面察看效果,7.5图形用户界面编程,7.5.1设置对象属性控件的String属性和Tag属性:前者为显示在控件上的文本,后者相当于为控件取个名字,这个名字为控件在应用程序中的ID,控件的句柄和相应的回调函数都与这个名字有直接的关系。设置控件的属性可以使用GUIDE的属性察看器和控件浏览器完成。单击工具条中的控件浏览器按钮,在弹出的对话框中,可以察看所有已经添加在图形界面中的对象以及对象的String和Tag属性,如图7-22所示。,图7-22控件对象浏览器,首先设置图形窗体的属性,用鼠标双击控件对象浏览器中的“figure(Untitled)”,可以打开属性察看器编辑修改和察看图形窗体的属性。这里需要修改的属性包括图形的Name属性和Tag属性,将Name属性设置为SimpleGUI,将Tag属性设置为simpleGui,如图7-23所示。然后双击控件对象浏览器中的uicontrol(pushbutton1PushButton),这时将打开按钮对象的属性察看器,同时,在GUIDE的外观编辑器中,可以看到画布上的第一个按钮被选中了。这时,需要将该按钮的String属性设置为Draw,将Tag属性设置为btnDraw,如图7-24所示。,图7-23设置图形界面的属性,图7-24设置按钮的属性,依此类推,分别将其他的控件设置为如下的属性:第二个按钮:*String:ChangeColor。*Tag:btnChangeColor。静态文本框1:*String:Color。静态文本框2:*String:Red。*Tag:txtRed。*HorizontalAlignment:left。,静态文本框3:*String:Green。*Tag:txtGreen。*HorizontalAlignment:left。静态文本框4:*String:Blue。*Tag:txtBlue。*HorizontalAlignment:left。静态文本框5:*String:EdgeColor。滚动条:*Tag:sliderEdgeColor。,图7-25设置控制对象属性得到的效果,7.5.2编写回调函数完成了前面的工作之后,就要通过编写控件的回调函数来实现不同控件的界面功能了。图形用户界面的功能主要通过控件响应用户的动作来完成,特别在MATLAB的图形用户界面应用程序中,用户界面控件主要响应用户的鼠标动作单击动作也就是选中控件的动作。响应鼠标动作的方法通过编写回调函数来完成。MATLAB图形用户界面控件的回调函数,是指在界面控件被选中的时候,响应动作的M语言函数。在回调函数中,一般需要完成如下功能:*获取发出动作的对象句柄。*根据发出的动作,设置影响的对象属性。,一般回调函数的声明为functionobject_Callback(hObject,eventData,handles)其中:*object为发生事件的控件的Tag属性字符串。*hObject为发生事件的控件的句柄。*eventData为保留字段,目前版本的MATLAB还暂时不使用。*handles为一个结构,这个结构中包含所有界面上控件的Tag属性值,还可以添加用户自己的数据。,首先,程序的头部为程序的初始化和调度代码,一般情况下,用户不需要修改这部分代码。在程序执行的过程中,这部分代码起到了调度程序的功能,分别完成了打开图形界面、初始化以及响应用户动作的功能。一般地,此段代码如下:%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct(gui_Name,mfilename,.gui_Singleton,gui_Singleton,.gui_OpeningFcn,simple_gui_OpeningFcn,.gui_OutputFcn,simple_gui_OutputFcn,.,gui_LayoutFcn,.gui_Callback,);ifnarginend%Endinitializationcode-DONOTEDIT,在调度代码的后面紧跟着两个子函数,这两个子函数就是GUI的回调函数。第一个回调函数是functionsimple_gui_OpeningFcn(hObject,eventdata,handles,varargin)该函数负责打开图形界面,同时,若程序中需要对一些全局的参数进行初始化或者设置时,可以将初始化用户数据的代码添加在该子函数中。第二个回调函数是functionvarargout=simple_gui_OutputFcn(hObject,eventdata,handles)该子函数负责将图形界面的句柄返回给用户的输出参数。,接下来的子函数是分别用来响应用户的动作输入,完成相应功能的GUI控件回调子函数。在这里首先编写Draw按钮的回调函数。在M文件中找到函数btnDraw_Callback,并且添加相应的代码:functionbtnDraw_Callback(hObject,eventdata,handles)%绘制三维曲面hsurfc=surf(peaks(30),FaceColor,blue);%保存三维曲面的句柄handles.hsurface=hsurfc;guidata(hObject,handles);,%设置相应的文本显示当前色彩数值set(handles.txtRed,String,Red:0);set(handles.txtGreen,String,Green:0);set(handles.txtBlue,String,Blue:1);在上述的代码中,首先绘制了三维曲面,然后将三维曲面的句柄保存在handles结构中。最后还设置了相应色彩的文本属性以显示不同的色彩数值。,注意:再次强调在GUIDE创建的M函数文件中,若修改了handles结构,则需要通过guidata函数将handles的结构保存起来,只有这样才能够通过handles结构将不同的用户数据传递到相应的子函数中。若此时执行M文件,单击“Draw”按钮之后,就可以在坐标轴中观察到程序的输出效果三维的曲面,如图7-27所示。,图7-27绘制曲面的效果,继续修改M文件,在不同控件的回调函数中添加代码完成用户界面的功能。SimpleGUI的M代码(回调函数部分)如下:单击“ChangeColor”按钮的回调函数:001%-ExecutesonbuttonpressinbtnChangeColor.002functionbtnChangeColor_Callback(hObject,eventdata,handles)003%修改曲面色彩004%获取曲面的句柄005hsurf=handles.hsurface;006%hsurf=findobj(gcf,Type,Surface);,007%生成随机的色彩008newColor=rand(1,3);009%设置曲面的色彩010set(hsurf,FaceColor,newColor);%Setfacecolorofsurface011%设置相应的文本显示当前色彩数值012set(handles.txtRed,String,Red:num2str(newColor(1,1);013set(handles.txtGreen,String,Green:num2str(newColor(1,2);014set(handles.txtBlue,String,Blue:num2str(newColor(1,3);,滚动条的回调函数:001%-Executesonslidermovement.002functionsl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省云县2025年上半年事业单位公开遴选试题含答案分析
- 河北省易县2025年上半年公开招聘城市协管员试题含答案分析
- 2025年房屋购买与配套设施安装合同
- 2025版铁路客户服务中心客户满意度调查与提升方案合同
- 2025出租居间合同协议书范本:城市综合体租赁服务
- 2025褚之与吴刚的离婚协议书及共同财产分割及子女抚养合同
- 2025年度砼工程劳务分包与进度控制合同
- 2025年度水泥井盖绿色环保认证采购合同约定
- 2025年度文化创意园场地租赁及配套运营管理协议
- 2025年度柴油油品批发与零售价格指数合同
- 中国帕金森病步态障碍管理专家共识(2025年)解读课件
- ACS合并消化道出血治疗策略
- 数字化转型视角下H公司订单管理优化策略研究
- 精益管理看板
- 汽车产品初期流动管理计划
- 《战略资源稀土》课件
- 《过程审核讲义》课件
- 中医内科学虚劳培训课件
- DB41T 2086-2020 加油加气站内电动汽车充电设施建设技术规范
- 峥嵘岁月 课件-2024-2025学年高中音乐人音版(2019) 必修 音乐鉴赏
- GB 21258-2024燃煤发电机组单位产品能源消耗限额
评论
0/150
提交评论