我们热爱生命科学!-生物行

[推荐] Matlab GUI编程中文参考手册(3)

时间:2006-01-11 15:51来源:Internet 作者:bioguider 点击: 1992次

(3)选中【Option】菜单项,界面呈现如图11.3.3.4-2 所示。
 
图11.3.3.4-2

(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]);  
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>
   'string','正体',...        %按键功能的文字标识'正体'
   'position',[0.7,0.69,0.15,0.08]);        %按键位置
set(hr1,'value',get(hr1,'Max'));%因图名缺省使用正体,所以小圆圈应被点黑 <20>
set(hr1,'callback',[...          %     <21>
   'set(hr1,''value'',get(hr1,''max'')),',... %选中将小圆圈点黑  <22>
   'set(hr2,''value'',get(hr2,''min'')),',... %将“互斥”选项点白 <23>
   'set(htitle,''fontangle'',''normal''),',... %使图名字体正体显示
  ]);         
hr2=uicontrol(gcf,'style','radio',...    %创建“无线电”选择按键 <26>
  'string','斜体',...        %按键功能的文字标识'斜体'
  'position',[0.7,0.58,0.15,0.08],...   %按键位置
  'callback',[...
   'set(hr1,''value'',get(hr1,''min'')),',... %      <30>
   'set(hr2,''value'',get(hr2,''max'')),',... %      <31>
   'set(htitle,''fontangle'',''italic'')',... %使图名字体斜体显示
  ]);               %      <33>
   ht=uicontrol(gcf,'style','toggle',...   %制作双位按键    <34>
      'string','Grid',...
      'position',[0.67,0.40,0.15,0.12],...
      'callback','grid');
 
图 11.4.3.1-1  静态文本、选择开关、双位按键及控件区域框

 

11.4.3.2 静态文本框、滑动键、检录框示例
【*例11.4.3.2-1】目标:制作演示“归一化二阶系统单位阶跃响应”的交互界面。在该界面中,阻尼比可在[0.02,2.02]中连续调节,标志当前阻尼比值;可标志峰值时间和大小;可标志(响应从0到0.95所需的)上升时间。本例涉及以下主要内容:(A)静态文本的创建和实时改写。(B)滑动键的创建;'Max' 和 'Min' 的设置;'value' 的设置和获取。(C)检录框的创建;'value' 的获取。(D)受多个控件影响的回调操作。
[exm11432_1.m]
clf reset
set(gcf,'unit','normalized','position',[0.1,0.2,0.64,0.35]);
set(gcf,'defaultuicontrolunits','normalized');
set(gcf,'defaultuicontrolfontsize',12);
set(gcf,'defaultuicontrolfontname','隶书');
set(gcf,'defaultuicontrolhorizontal','left');
str='归一化二阶系统阶跃响应曲线';
set(gcf,'name',str,'numbertitle','off');  %书写图形窗名
h_axes=axes('position',[0.05,0.2,0.6,0.7]); %定义轴位框位置  
set(h_axes,'xlim',[0,15]);      %设置时间轴长度
str1='当前阻尼比=';
t=0:0.1:10;z=0.5;y=step(1,[1 2*z 1],t);
hline=plot(t,y);
htext=uicontrol(gcf,'style','text',... %制作静态说明文本框    <14>
   'position',[0.67,0.8,0.33,0.1],...
   'string',[str1,sprintf('%1.4g\',z)]);
hslider=uicontrol(gcf,'style','slider',... %创建滑动键     <17>
   'position',[0.67,0.65,0.33,0.1],...
   'max',2.02,'min',0.02,...  %设最大阻尼比为2,最小阻尼比为0.02  <19>
   'sliderstep',[0.01,0.05],...%箭头操纵滑动步长1%,游标滑动步长5%  <20>
   'value',0.5);     %缺省取阻尼比等于0.5         <21>
hcheck1=uicontrol(gcf,'style','checkbox',... %创建峰值检录框    <22>
   'string','最大峰值' ,...
   'position',[0.67,0.50,0.33,0.11]);
vchk1=get(hcheck1,'value');      %获得峰值检录框的状态值  <25>
hcheck2=uicontrol(gcf,'style','checkbox',... %创建上升时间检录框   <26>
   'string','上升时间(0->0.95)',...
   'position',[0.67,0.35,0.33,0.11]);
vchk2=get(hcheck2,'value');      %获得上升时间检录框的状态值 <29>
set(hslider,'callback',[...      %操作滑动键,引起回调   <30>
   'z=get(gcbo,''value'');',...    %获得滑动键状态值    <31>
   'callcheck(htext,str1,z,vchk1,vchk2)']); %被回调的函数文件    <32>
set(hcheck1,'callback',[...      %操作峰值检录框,引起回调 <33>
   'vchk1=get(gcbo,''value'');',...   %获得峰值检录框状态值  <34>
   'callcheck(htext,str1,z,vchk1,vchk2)']); %被回调的函数文件    <35>
set(hcheck2,'callback',[...      %操作峰值检录框,引起回调 <36>
   'vchk2=get(gcbo,''value'');',...   %获得峰值检录框状态值  <37>
   'callcheck(htext,str1,z,vchk1,vchk2)']); %被回调的函数文件    <38>

(责任编辑:泉水)
顶一下
(19)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片