[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
(责任编辑:泉水) |