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

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

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

[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.2-1

 

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.4.3.3-1

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