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

📄 matlabgui中文参考手册.txt

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

[callcheck.m]
function callcheck(htext,str1,z,vchk1,vchk2)
cla,set(htext,'string',[str1,sprintf('%1.4g\',z)]); %更新静态文本框内容 <2>
dt=0.1;t=0:dt:15;N=length(t);y=step(1,[1 2*z 1],t);plot(t,y);
if vchk1          %假如峰值框被选中      <4>
   [ym,km]=max(y);
   if km<(N-3)       %假如在设定时间范围内能插值   <6>
      k1=km-3;k2=km+3;k12=k1:k2;tt=t(k12);
      yy=spline(t(k12),y(k12),tt);      %局部样条插值   <8>
      [yym,kkm]=max(yy);        %求更精确的峰值位置
      line(tt(kkm),yym,'marker','.',...    %画峰值点    <10>
         'markeredgecolor','r','markersize',20);
      ystr=['ymax = ',sprintf('%1.4g\',yym)];
      tstr=['tmax = ',sprintf('%1.4g\',tt(kkm))];
      text(tt(kkm),1.05*yym,{ystr;tstr})
   else         %假如在设定时间范围内不能插值  <15>
      text(10,0.4*y(end),{'ymax --> 1';'tmax --> inf'})
   end
end
if vchk2         %假如上升时间框被选中    <19>
   k95=min(find(y>0.95));k952=[(k95-1),k95];
   t95=interp1(y(k952),t(k952),0.95);     %线性插值    <21>
   line(t95,0.95,'marker','o','markeredgecolor','k','markersize',6);
   tstr95=['t95 = ',sprintf('%1.4g\',t95)];
   text(t95,0.65,tstr95)
end  
 

11.4.3.3 可编辑框、弹出框、列表框、按键示例
【*例11.4.3.3-1】目标:制作一个能绘制任意图形的交互界面。它包括:可编辑文本框、弹出框、列表框。本例的关键内容是:如何使编辑框允许输入多行指令。
[exm11433_1.m]
clf reset             %      <1>
set(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]);%设置图形窗大小
set(gcf,'defaultuicontrolunits','normalized');
set(gcf,'defaultuicontrolfontsize',11);
set(gcf,'defaultuicontrolfontname','隶书');
set(gcf,'defaultuicontrolhorizontal','left');
set(gcf,'menubar','none');        %删除图形窗工具条
str='通过多行指令绘图的交互界面';
set(gcf,'name',str,'numbertitle','off');    %书写图形窗名
h_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off');%定义轴位框位置  
uicontrol(gcf,'Style','text',...      %制作静态文本框
   'position',[0.52,0.87,0.26,0.1],...
   'String','绘图指令输入框');
hedit=uicontrol(gcf,'Style','edit',...    %制作可编辑文本框  <14>
   'position',[0.52,0.05,0.26,0.8],...
   'Max',2);       %取2,使Max-Min>1,而允许多行输入  <16>
hpop=uicontrol(gcf,'style','popup',...    %制作弹出菜单   <17>
   'position',[0.8,0.73,0.18,0.12],...
   'string','spring|summer|autumn|winter');%设置弹出框中选项名   <19>
hlist=uicontrol(gcf,'Style','list',...    %制作列表框   <20>
   'position',[0.8,0.23,0.18,0.37],...
   'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名 <22>
   'Max',2);       %取2,使Max-Min>1,而允许多项选择  <23>
hpush=uicontrol(gcf,'Style','push',... %制作与列表框配用的按键   <24>
   'position',[0.8,0.05,0.18,0.15],'string','Apply');
set(hedit,'callback','calledit(hedit,hpop,hlist)'); %编辑框输入引起回调 <26>
set(hpop,'callback','calledit(hedit,hpop,hlist)'); %弹出框选择引起回调 <27>
set(hpush,'callback','calledit(hedit,hpop,hlist)'); %按键引起的回调  <28>

[calledit.m]
function calledit(hedit,hpop,hlist)
ct=get(hedit,'string');    %获得输入的字符串函数     <2>
vpop=get(hpop,'value');    %获得选项的位置标识      <3>
vlist=get(hlist,'value');   %获得选项位置向量       <4>
if ~isempty(ct)      %可编辑框输入非空时      <5>
   eval(ct')       %运行从编辑文本框送入的指令    <6> 
   popstr={'spring','summer','autumn','winter'};  %弹出框色图矩阵 <7>
   liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容 <8> 
   invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令 <9>
   colormap(eval(popstr{vpop}))  %采用弹出框所选色图     <10>
   vv=zeros(1,4);vv(vlist)=1;  
   for k=1:4
      if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形
   end
end   
 
 

11.5 由M函数文件产生用户菜单和控件
11.5.1 利用全局变量编写用户界面函数文件
【*例11.5.1-1】目标:利用M函数文件创建与例11.4.3.3-1相同的用户界面。本例演示:如何依靠全局变量传递控件的图柄,从而保证回调动作正确执行。
(1)编写M函数文件exm1151_1.m和calledit1.m
[exm1151_1.m]
function exm1151_1( )
global hedit hpop hlist
(这中间是:原exm11433_1.m第〈1〉行到第〈25〉行的全部指令)
set(hedit,'callback','calledit1');      %编辑框输入引起回调 <26>
set(hpop,'callback','calledit1');      %弹出框选择引起回调 <27>
set(hpush,'callback','calledit1');      %按键引起的回调  <28>

[calledit1.m]
function calledit1( )
global hedit hpop hlist
(下面续接内容是:原calledit.m第〈2〉行以下的全部指令)

(2)在MATLAB指令窗中运行exm1151_1就可获得题目所要求的图形用户界面。

 

11.5.2 利用 'UserData' 属性编写用户界面函数文件
【*例11.5.2-1】目标:利用M函数文件创建与例11.4.3.3-1相同的用户界面。本例演示:如何依靠图形窗的'UserData' 属性传送用户控件的图柄,从而保证回调动作正确执行。
(1)编写M函数文件exm1152_1.m和calledit2.m
[exm1152_1.m]
function exm1152_1( )
(这中间是:原exm11433_1.m第〈1〉行到第〈25〉行的全部指令)
set(hedit,'callback','calledit2');      %编辑框输入引起回调 <26>
set(hpop,'callback','calledit2');      %弹出框选择引起回调 <27>
set(hpush,'callback','calledit2');      %按键引起的回调  <28>
set(gcf,'UserData',[hedit,hpop,hlist])

[calledit2.m]
function calledit2( )
H=get(gcf,'UserData');
ct=get(H(1),'string');    %获得输入的字符串函数     <2>
vpop=get(H(2),'value');    %获得选项的位置标识      <3>
vlist=get(H(3),'value');   %获得选项位置向量       <4>
(下面续接内容是:原calledit.m第〈5〉行以下的全部指令)

(2)在MATLAB指令窗中运行exm1152_1就可获得题目所要求的图形用户界面。

 

11.5.3 利用递归法编写用户界面函数文件
【*例11.5.3-1】目标:利用M函数文件创建与例11.4.3.3-1相同的用户界面。本例演示:如何依靠图形窗'UserData' 属性在递归调用中传送用户控件的图柄,保证回调动作正确执行。
(1)编写M函数文件exm1153_1.m
[exm1153_1.m]
function exm1153_1(flag)
if nargin<1;flag='startup';end  %允许在无输入宗量形式下调用该函数  <2>
if ~ischar(flag);error('flag must be character ''startup''.');end
switch flag       %切换控制         <4>
case 'startup'           %      <5>
clf reset             %      <6> 
set(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]);
set(gcf,'defaultuicontrolunits','normalized');
set(gcf,'defaultuicontrolfontsize',11);
set(gcf,'defaultuicontrolfontname','隶书');
set(gcf,'defaultuicontrolhorizontal','left');
set(gcf,'menubar','none');        %删除图形窗工具条
str='通过多行指令绘图的交互界面';
set(gcf,'name',str,'numbertitle','off');    %书写图形窗名
h_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off');  
uicontrol(gcf,'Style','text',...      %制作静态文本框
   'position',[0.52,0.87,0.26,0.1],...
   'String','绘图指令输入框');
hedit=uicontrol(gcf,'Style','edit',...    %制作可编辑文本框  <19>
   'position',[0.52,0.05,0.26,0.8],...        %  <20>
   'Max',2);       %取2,使Max-Min>1,而允许多行输入  <21>
hpop=uicontrol(gcf,'style','popup',...    %制作弹出菜单   <22>
   'position',[0.8,0.73,0.18,0.12],...        %  <23>
   'string','spring|summer|autumn|winter');%设置弹出框中选项名   <24>
hlist=uicontrol(gcf,'Style','list',...    %制作列表框   <25>
   'position',[0.8,0.23,0.18,0.37],...        %  <26>
   'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名 <27>
   'Max',2);       %取2,使Max-Min>1,而允许多项选择  <28>
hpush=uicontrol(gcf,'Style','push',... %制作与列表框配用的按键   <29>
   'position',[0.8,0.05,0.18,0.15],'string','Apply');
set(hedit,'callback','exm1153_1(''set'')');   %编辑框输入引起回调 <31>
set(hpop,'callback','exm1153_1(''set'')');   %弹出框选择引起回调 <32>
set(hpush,'callback','exm1153_1(''set'')');   %按键引起的回调  <33>
set(gcf,'UserData',[hedit,hpop,hlist]); %向'UserData'存放图柄   <34>
case 'set'        %以下是回调函数       <35>
H=get(gcf,'UserData');    %从'UserData'获取图柄     <36>
ct=get(H(1),'string');    %获得输入的字符串函数     <37>
vpop=get(H(2),'value');    %获得选项的位置标识      <38>
vlist=get(H(3),'value');   %获得选项位置向量       <39>
if ~isempty(ct)      
   eval(ct')       %运行从编辑文本框送入的指令 
   popstr={'spring','summer','autumn','winter'};  %弹出框色图矩阵
   liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容 
   invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令
   colormap(eval(popstr{vpop}))  %采用弹出框所选色图
   vv=zeros(1,4);vv(vlist)=1;  
   for k=1:4
      if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形

⌨️ 快捷键说明

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