资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第 8 章 图形用户界面GUI假如读者所从事的数据分析、解方程、计算结果可视工作比较单一,那么一般不会考虑图形用户界面(Graphical User Interfaces ,GUI)的制作。但是如果读者想向别人提供某种新的设计分析工具,想体现某种新的设计分析理念,想进行某种技术、方法的演示,那么图形用户界面也许是最好的选择之一。MATLAB本身提供了很多的图形用户界面,如sisotool“单输入单输出控制系统设计工具”、fdatool“滤波器设计和分析工具”等。这些工具的出现不仅提高了设计和分析效率,而且改变原先的设计模式,引出了新的设计思想,改变了和正在改变着人们的设计、分析理念。正是出于这种观察,作者将图形用户界面内容列入本教程。本章由四个精心设计的算例组成。这四个算例,一方面尽可能多地向读者展现构成GUI的各种控件或组件,另方面借助算例中回调函数的编写较快地将读者引向GUI制作的纵深。本书作者相信:读者只要耐心地按照示例进行操作,便能在愉快感受GUI成功制作的同时,事半功倍地掌握GUI的制作技巧。8.1 图形用户界面入门示例【例8.1-1】为演示归一化二阶系统中阻尼比对单位阶跃响应的影响,需要制作如图8.1-1所示的用户界面。要求:在界面右侧的编辑框中输入阻尼比的具体“大于0的数值标量”,就能在坐标轴上画出相应曲线。图8.1-1 待制作的二阶系统单位阶跃响应演示界面(1)GUIDE开发环境的引入图8.1-2 进入GUIDE开发环境的默认引导对话窗图8.1-3 默认的空白用户界面开发环境GUIDE(2)根据要求选配界面组件lll图8.1-4 选配界面组件后的版面编辑器(3)界面组件的参数设置图8.1-5 窗属性编辑器和设置的属性值图8.1-6 经属性设置后的设计版面(5)初步设计界面的保存图8.1-7 仅在外形上与题给要求一致的GUI图8.1-8 版面编辑器自动生成的设计界面M文件(6)回调程序的编写图8.1-9 GUIDE生成的“空白回调函数体”示图图8.1-10 填写工作指令后的回调子函数(7)所建界面的使用8.2 控件创建及应用示例【例8.2-1】为归一化二阶系统单位阶跃响应制作如图8.2-1所示的用户界面。要求:(1)通过编辑框和滑键都能输入阻尼比。(2)刚启动的界面初始形态如图8.2-1所示。(3)在刚启动的初始界面上,响应曲线用红线绘制;而一旦界面被操作,则响应曲线将用蓝线绘制。(4)在列表框中的三个选项可以任意组合。图8.2-1 用户界面的初始状态(1)GUI版面编辑器的开启(2)对未来界面窗属性设置(3)为版面设计区引入坐标参照系图8.2-2 “格尺”对话框(默认状态)图8.2-3 一般坐标参照工具示意图8.2-4 设计本例用户界面的版面编辑器(4)根据题目要求进行界面构建n 。nn 。n 。n 。n图8.2-5 执行文件尚未填写时的生成界面(5)由版面编辑器自动产生的exm080201.m文件的结构(6)编写初始化程序function exm080201_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to exm080201 (see VARARGIN)%U_Start -“%U_Stat”和“%U_End”之间的 M 码均由作者编写-U Start zeta=0.3; set(handles.edit1,String,num2str(zeta)set(handles.slider1,Value,zeta) set(handles.gridon,Value,0) set(handles.gridoff,Value,1) set(handles.listbox1,Value,1) handles.t=0:0.05:15; handles.Color=Red; handles.zeta=zeta;handles.flag=0; handles=surfplot(handles);handles.flag=1; handles.Color=Blue; %U_End -U Endhandles.output = hObject;guidata(hObject, handles);(7)可编辑框的回调子函数function edit1_Callback(hObject, eventdata, handles)% hObject % eventdata reserved - to be defined in a future version of MATLAB% handles %U_Start-U_Startsz=get(hObject,String); zeta=str2double(sz); set(handles.slider1,Value,zeta) handles.zeta=zeta;handles=surfplot(handles); guidata(hObject, handles);%U_End-U_End(8)滑键回调子函数function slider1_Callback(hObject, eventdata, handles)%U_Start-U_Startzeta=get(hObject,Value);set(handles.edit1,String,num2str(zeta)handles.zeta=zeta;handles=surfplot(handles);guidata(hObject, handles);%U_End-U_End(9)无线电按键回调子函数function gridon_Callback(hObject, eventdata, handles)%U_Start-U_Startset(handles.gridoff,Value,0)grid on%U_End-U_End function gridoff_Callback(hObject, eventdata, handles)%U_Start-U_Startset(handles.gridon,Value,0)grid off%U_End-U_End(10)列表框回调子函数function listbox1_Callback(hObject, eventdata, handles)%U_Start-U_Startlistindex=get(hObject,Value);if any(listindex=1) set(handles.listbox1,Value,1)endhandles.flag=0;handles=surfplot(handles);handles.flag=1;guidata(hObject, handles);%U_End-U_End(11)绘图子函数function handles=surfplot(handles)% handles=surfplot(handles)% handles%zeta=handles.zeta;t=handles.t;listindex=get(handles.listbox1,Value);Nt=length(t);if handles.flag=0 clazmin=get(handles.slider1,Min);zmax=get(handles.slider1,Max);zt=zmin:0.05:zmax; Nz=length(zt); ZT,T=meshgrid(zt,t); Y=zeros(Nt,Nz); for k=1:Nz Y(:,k)=step(tf(1,1,2*zt(k),1),t); end surface(ZT,T,Y) shading flatelse delete(handles.g1) delete(handles.r
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号