MATLAB/Simulink/C++/Java等编程援助
联系方式:
QQ:806268790
QQ 空间:http://806268790.qzone.qq.com
更多学习资料,请加我为 QQ 好友,或者访问我的 QQ 空间
有编程问题的朋友,请直接加我为QQ好友,提供在线答疑
如果我QQ不在线,请将问题发到我的邮箱,及时给你答复
专业提供以下方向的编程援助:
1. MATLAB/Simulink/C++/Java等编程问题;
2. 数字图像处理、信号处理、通信仿真设计;
3. 机器人路径规划、轨迹规划、机器人控制;
4. 各类数值计算、小波分析算法、优化设计;
5. 自动控制、电机控制、智能控制、模糊控制;
6. 粒子群算法、神经网络、遗传算法等智能算法;
7. 其他编程和仿真问题。
郑重声明:本资料整理于网络,仅限交流使用,切勿用做商业用途!
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