logo资料库

MATLABGUI编程中文参考手册-MATLAB GUI编程中文参考手册.pdf

第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
资料共20页,剩余部分请下载后查看
2.pdf
MATLAB GUI编程中文参考手册.pdf
精通MATLAB语言,有MATLAB编程问题的朋友,请直接联系我! 联系方式: QQ:993878382 Email:993878382@qq.com MATLAB博客:http://top99.blog.hexun.com/46036333_d.html 如果我QQ不在线,可以将问题发到我的邮箱,或者在我的MATLAB 博客留言,第一时间答复你!简单问题请直接留言,复杂问题可以 提供解决思路!同探讨,共进步! 还可以为公司和科研单位设计各类算法,欢迎前来咨询! 郑重声明:本资源来源于网络,仅限交流使用,请勿用于商业用途!
Matlab GUI 编程中文参考手册 Matlab GUI 编程中文参考手册 用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法。如键盘、鼠标、跟踪球、 话筒都可成为与计算机交换信息的接口。 图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象 (Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计 算机产生某种动作或变化,比如实现计算、绘图等。 假如读者所从事的数据分析、解方程、计算结果可视工作比较单一,那么一般不会考虑 GUI 的制作。但是 如果读者想向别人提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专 用工具,那么图形用户界面也许是最好的选择之一。 MATLAB 为表现其基本功能而设计的演示程序 demo 是使用图形界面的最好范例。MATLAB 的用户,在指令窗 中运行 demo 打开那图形界面后,只要用鼠标进行选择和点击,就可浏览那丰富多彩的内容。 即便比较熟悉 MATLAB 的读者,在他初次编写 GUI 程序时,也会感到棘手。为使读者获得制作自己 GUI 的体 验,本章“入门”节提供了一个简单的示例。读者只要输入所提供的程序,就可引出相应的界面。 本章第 2 节叙述图形用户界面的设计原则和一般制作步骤。第 3、4 节分别介绍用户菜单、用户控件的制作。 出于“由浅入深”的考虑,前 4 节制作 GUI 是通过 M 脚本文件实现的。利用 M 函数文件制作 GUI ,需要解 决数据传递问题,为此专设第 5 节给予阐述和示例。MATLAB 5.x 版为方便用户制作图形界面,提供了一个 交互式的设计工具 guide 。关于该工具的使用方法,被放在第 6 节中,以一个综合例题为设计目标逐步展 开。 在此提醒读者,假如要比较准确的理解本章程序和掌握本章内容,请先阅读第 10 章关于图柄的内容。 11.1 入门 【*例 11.1-1】对于传递函数为 的归一化二阶系统,制作一个能绘制该系统单位阶跃响应的图形用户界面。 本例演示:(A)图形界面的大致生成过程;(B)静态文本和编辑框的生成;(C)坐标方格控制键的形成; (D)如何使用该界面。 (1)产生图形窗和轴位框: clf reset 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',[0 15],'ylim',[0 1.8],'fontsize',8); 图 11.1-1 产生坐标轴 (2)在坐标框右侧生成作解释用的“静态文本”和可接受输入的“编辑框”: h_text=uicontrol(h_fig,'style','text',... 'unit','normalized','position',[0.67,0.73,0.25,0.14],... 博客石油--精彩转载更多精彩请登陆www.blogoil.com
'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;',... 'for k=1:length(z);',... 's2=tf(1,[1 2*z(k) 1]); ',... 'y(:,k)=step(s2,t);',... 'plot(t,y(:,k));',... 'if (length(z)>1) ,hold on,end,',... 'end;',... 'hold off,']); 图 11.1-2 在图形界面中添加编辑框和文本框 (3)形成坐标方格控制按键: h_push1=uicontrol(h_fig,'style','push',... 'unit','normalized','position',[0.67,0.37,0.12,0.15],... 'string','grid on','callback','grid on'); h_push2=uicontrol(h_fig,'style','push',... 'unit','normalized','position',[0.67,0.15,0.12,0.15],... 'string','grid off','callback','grid off'); 图 11.1-3 添加了两个按键的图形界面 (4)输入阻尼比系数 ,可得单位阶跃响应曲线: 图 11.1-4 输入标量阻尼比所得到的响应曲线 图 11.1-5 输入阻尼比数组所得到的一组响应曲线 11.2 图形用户界面的设计原则和一般步骤 11.2.1 设计原则 11.2.2 一般制作步骤 11.3 界面菜单(uimenu) 11.3.1 图形窗的标准菜单 【例 11.3.1-1】本例说明:如何隐藏和恢复标准菜单的显示。 (1)获得缺省设置的标准菜单 figure 博客石油--精彩转载更多精彩请登陆www.blogoil.com
(2)隐去标准菜单的两种方法 set(H_fig , 'MenuBar','none'); set(gcf,'menubar',menubar); (3)恢复图形窗上标准菜单 set(gcf,'menubar','figure'); 图 11.3.1-1 含有菜单条的图形窗 图 11.3.1-2 移去菜单条的图形窗 11.3.2 自制的用户菜单 【*例 11.3.2-1】本例演示:如何自制一个带下拉菜单表的用户菜单(如图 11.3.2-1 所示)。该菜单能使 图形窗背景颜色设置为兰色或红色。 figure %创建一个图形窗 h_menu=uimenu(gcf,'label','Color'); %制作用户顶层菜单项 Color <2> h_submenu1=uimenu(h_menu,'label','Blue',... %制作下拉菜单项 Blue <3> 'callback','set(gcf,''Color'',''blue'')'); %<4> h_submenu2=uimenu(h_menu,'label','Red',... %制作下拉菜单 Red <5> 'callback','set(gcf,''Color'',''red'')'); %<6> 图 11.3.2-1 创建用户菜单示例 11.3.3 用户菜单的属性 11.3.3.1 回调属性和菜单名 【*例 11.3.3.1-1】本例的目标是:在图形窗上自制一个名为【Test】的“顶层菜单项”;当用鼠标点动 该菜单项时,将产生一个带分格的封闭坐标轴。通过本例说明:(A)回调属性的运作机理;(B)用户顶 层菜单项的制作(C)uimenu 属性的设置方法;(D)复杂字符串的构成方法和注意事项。 (1)在 MATLAB 指令窗中运行以下程序可产生带分格的封闭坐标轴(见图 11.3.3.1-1) grid on,set(gca,'box','on') 图 11.3.3.1-1 带分格的封闭坐标轴 (2)在 MATLAB 指令窗中用以下 eval 指令可产生与图 11.3.3.1-1 相同的界面 eval('grid on,set(gca,''box'',''on'')') (3)产生图 11.3.3.1-2 界面的 uimenu 的书写格式一:直接连续表示法 uimenu('Label','Test','Callback','grid on,set(gca,''box'',''on''),') 图 11.3.3.1-2 通过顶层菜单 Test 形成的带分格的封闭坐标轴 博客石油--精彩转载更多精彩请登陆www.blogoil.com
(4)产生图 11.3.3.1-2 界面的 uimenu 的书写格式二:方括号续行号表示法 uimenu('Label','Test', ... 'Callback',['grid on,' , ... 'set(gca,''box'',''on'');']) (5)产生图 11.3.3.1-2 界面的 uimenu 的书写格式三:串变量法 Lpv='Test'; Cpv=['grid on,','set(gca,''box'',''on''),']; uimenu('Label', Lpv, 'Callback' , Cpv) (6)产生图 11.3.3.1-2 界面的 uimenu 的书写格式四:构架表示法 PS.Label='Test'; PS.Callback=['grid on;','set(gca,''box'',''on'');']; uimenu(PS) 11.3.3.2 设置简捷键或快捷键 【*例 11.3.3.2-1】本例目标:使图 11.3.2-1 所示菜单成为图 11.3.3.2-1 那样,Color 菜单项及其下拉的 Blue 菜单各带一个简捷键,而另一项下拉菜单 Red 带一个快捷键。 [exm11332_1.m] figure h_menu=uimenu(gcf,'Label','&Color'); %带简捷键 C 的用户菜单 Color <2> h_submenu1=uimenu(h_menu,'Label','&Blue',... %带简捷键 B 的的下拉菜单 Blue <3> 'Callback','set(gcf,''color'',''blue'')'); h_submenu2=uimenu(h_menu,'label','Red',... %制作另一个下拉菜单 Red 'Callback','set(gcf,''color'',''red'')',... 'Accelerator','r'); %为 Red 菜单设置快捷键 R <7> 图 11.3.3.2-1 为用户菜单设置快捷键 11.3.3.3 用户菜单的外观设计 【*例 11.3.3.3-1】本例演示:(A)把用户菜单 'Option' 设置为顶层的第3菜单项;(B)下拉菜单 被两条分隔线分为三个菜单区;(C)最下菜单项又有两个子菜单组成。 (1)编写程序,生成如图 11.3.3.3-1 所示界面 [exm11333_1.m] figure h_menu=uimenu('label','Option','Position',3); h_sub1=uimenu(h_menu,'label','grid on','callback','grid on'); h_sub2=uimenu(h_menu,'label','grid off','callback','grid on'); h_sub3=uimenu(h_menu,'label','box on','callback','box on',... 博客石油--精彩转载更多精彩请登陆www.blogoil.com
'separator','on'); %<6> h_sub4=uimenu(h_menu,'label','box off','callback','box off'); h_sub5=uimenu(h_menu,'label','Figure Color','Separator','on'); %<8> h_subsub1=uimenu(h_sub5,'label','Red','ForeGroundColor','r',... %<9> 'callback','set(gcf,''Color'',''r'')'); h_subsub2=uimenu(h_sub5,'label','Reset',... 'callback','set(gcf,''Color'',''w'')'); 图 11.3.3.3-1 (2)位置属性的获取 Pos_O=get(h_menu,'position'), %查询 Option 菜单位置值 Pos_BoxOn=get(h_sub3,'position') %查询 box ob 子菜单位置值 Pos_Red=get(h_subsub1,'position') %查询 red 子菜单的位置值 Pos_O = 3 Pos_BoxOn = 3 Pos_Red = 1 【*例 11.3.3.3-2】本例演示:当某菜单项选中后,如何使该菜单项贴上检录符“√”。 [exm11333_2.m] figure h_menu=uimenu('label','Option'); h_sub1=uimenu(h_menu,'label','Grid on',... %<3> 'callback',[... 'grid on,',... 'set(h_sub1,''checked'',''on''),',... 'set(h_sub2,''checked'',''off''),',... ]); h_sub2=uimenu(h_menu,'label','Grid off',... %<4> 'callback',[... 'grid off,',... 'set(h_sub2,''checked'',''on''),',... 'set(h_sub1,''checked'',''off''),',... ]); 图 11.3.3.3-2 Grid on 菜单选中后出现检录符 博客石油--精彩转载更多精彩请登陆www.blogoil.com
11.3.3.4 使能(Enable)与可见性(Visible)属性 【*例 11.3.3.4-1】 本例目标:制作一个带四个子菜单项的顶层菜单项;该下拉菜单分为两个功能区;每 个功能区的两个菜单项是相互对立的,因此采用使能属性处理;当图形窗坐标轴消隐时,整个坐标分隔控 制功能区不可见。 (1)编写如下脚本 M 文件 exm11334_1.m [exm11334_1.m] clf h_menu=uimenu('label','Option'); %产生顶层菜单项 Option h_sub1=uimenu(h_menu,'label','Axis on'); %产生 Axis on 菜单项,由缺省设置而使能 h_sub2=uimenu(h_menu,'label','Axis off',... 'enable','off'); %产生 Axis off 菜单项,但失能 h_sub3=uimenu(h_menu,'label','Grid on',... 'separator','on','visible','off'); %产生与上分隔的 Grid on 菜单项,但不可见 h_sub4=uimenu(h_menu,'label','Grid off',... 'visible','off'); %产生 Grid off 菜单项,但不可见 set(h_sub1,'callback',[... %选中 Axis on 菜单项后,产生回调操作 'Axis on,',... %画坐标 'set(h_sub1,''enable'',''off''),',... %Axis on 菜单项失能 'set(h_sub2,''enable'',''on''),',... %Axis off 菜单项使能 'set(h_sub3,''visible'',''on''),',... %Grid on 菜单项可见 'set(h_sub4,''visible'',''on''),']); %Grid off 菜单项可见 set(h_sub2,'callback',[... % %选中 Axis off 菜单项后,产生回调操作 'axis off,',... %使坐标消失 'set(h_sub1,''enable'',''on''),',... %Axis on 菜单项使能 'set(h_sub2,''enable'',''off''),',... %Axis off 菜单项失能 'set(h_sub3,''visible'',''off''),',... %Grid on 菜单项不可见 'set(h_sub4,''visible'',''off''),']); %Grid off 菜单项不可见 set(h_sub3,'callback',[... %选中 Grid on 菜单项后,产生回调 'grid on,',... %画坐标分格线 'set(h_sub3,''enable'',''off''),',... %Grid on 菜单项失能 'set(h_sub4,''enable'',''on''),']); %Grid off 菜单项使能 set(h_sub4,'callback',[... %选中 Grid off 菜单项,产生回调 'grid off,',... %消除坐标分格线 'set(h_sub3,''enable'',''on''),',... %Grid on 菜单项使能 'set(h_sub4,''enable'',''off''),']); %Grid off 菜单项失能 (2)在 MATLAB 指令窗中运行 exm11334_1 ,得到图 11.3.3.4-1 所示的界面 图 11.3.3.4-1 (3)选中【Option】菜单项,界面呈现如图 11.3.3.4-2 所示。 图 11.3.3.4-2 博客石油--精彩转载更多精彩请登陆www.blogoil.com
(4)选中【Option:Axis on】后,界面呈现如图 11.3.3.4-3 所示。 图 11.3.3.4-3 (5)选中【Option:Grid on】后,界面呈现如图 11.3.3.4-4 所示。 图 11.3.3.4-4 11.3.4 现场菜单的制作 【*例 11.3.4-1】目标:绘制一条 Sa 曲线,创建一个与之相联系的现场菜单,用以控制 Sa 曲线的颜色。 (1)编写脚本 M 文件 exm1134_1.m [exm1134_1.m] t=(-3*pi:pi/50:3*pi)+eps; y=sin(t)./t; hline=plot(t,y); %绘制 Sa 曲线 cm=uicontextmenu; %创建现场菜单 %制作具体菜单项,定义相应的回调 uimenu(cm,'label','Red','callback','set(hline,''color'',''r''),') uimenu(cm,'label','Blue','callback','set(hline,''color'',''b''),') uimenu(cm,'label','Green','callback','set(hline,''color'',''g''),') set(hline,'uicontextmenu',cm) %使 cm 现场菜单与 Sa 曲线相联系 (2)在指令窗中运行文件 exm1134_1.m ,得到图 11.3.4-1 所示的(但为蓝色的)Sa 曲线。 图 11.3.4-1 Context 菜单 (3)将鼠标指针指向线条,点击鼠标右键的同时弹出现场菜单,在选中某菜单项(如 Red)后,Sa 曲线就 改变(为红)颜色(如图 11.3.4-1 所示)。 11.4 用户控件(uicontrol) 11.4.1 控件制作函数 11.4.2 用户控件的种类 11.4.3 控件制作示例 11.4.3.1 双位按键、无线电按键、控件区域框示例 【*例 11.4.3.1-1】目标:创建一个界面包含 4 种控件:静态文本、“无线电”选择开关、双位按键、控 件区域框。 [exm11431_1.m] clf reset set(gcf,'menubar','none') set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]); set(gcf,'defaultuicontrolunits','normalized') %设置用户缺省控件单位属性值 h_axes=axes('position',[0.05,0.2,0.6,0.6]); 博客石油--精彩转载更多精彩请登陆www.blogoil.com
分享到:
收藏