⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matlabgui中文参考手册.txt

📁 MATLAB-GUI初学相关资料 包含一些小程序与word文档ppt
💻 TXT
📖 第 1 页 / 共 3 页
字号:
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);
 

(2)在坐标框右侧生成作解释用的“静态文本”和可接受输入的“编辑框”:
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;',...
      '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,']);
 

(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.2 图形用户界面的设计原则和一般步骤
11.2.1 设计原则
11.2.2  一般制作步骤
11.3 界面菜单(uimenu)
11.3.1 图形窗的标准菜单
【例11.3.1-1】本例说明:如何隐藏和恢复标准菜单的显示。
(1)获得缺省设置的标准菜单
 figure

(2)隐去标准菜单的两种方法
set(H_fig , 'MenuBar','none');
set(gcf,'menubar',menubar);

(3)恢复图形窗上标准菜单
set(gcf,'menubar','figure');
 

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.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')  

(2)在MATLAB指令窗中用以下eval指令可产生与图11.3.3.1-1相同的界面
eval('grid on,set(gca,''box'',''on'')')  

(3)uimenu的书写格式一:直接连续表示法
uimenu('Label','Test','Callback','grid on,set(gca,''box'',''on''),')  
 
(4)uimenu的书写格式二:方括号续行号表示法
uimenu('Label','Test', ...
  'Callback',['grid on,' , ...
       'set(gca,''box'',''on'');'])  

(5)uimenu的书写格式三:串变量法
Lpv='Test';
Cpv=['grid on,','set(gca,''box'',''on''),'];
uimenu('Label', Lpv, 'Callback' , Cpv)  

(6)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.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',...
 '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'')');
 
(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.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菜单项失能 
 

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曲线相联系
 
(3)将鼠标指针指向线条,点击鼠标右键的同时弹出现场菜单,在选中某菜单项(如Red)后,Sa曲线就改变(为红)颜色
 
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]);  
t=0:pi/50:2*pi;y=sin(t);plot(t,y);
set(h_axes,'xlim',[0,2*pi]);
set(gcf,'defaultuicontrolhorizontal','left');
htitle=title('正弦曲线');
set(gcf,'defaultuicontrolfontsize',12);   %设置用户缺省控件字体属性值
uicontrol('style','frame',...      %创建用户控件区   <11>
   'position',[0.67,0.55,0.25,0.25]);    
uicontrol('style','text',...      %创建静态文本框   <13>
   'string','正斜体图名:',...
   'position',[0.68,0.77,0.18,0.1],...
   'horizontal','left');       
hr1=uicontrol(gcf,'style','radio',...    %创建“无线电”选择按键 <17>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -