第十章 图形用户界面(GUI)制作
10.1 入门
1
【例10.1-1】对于传递函数为G 的归一化二阶系统,制作一个能绘制该系统
s 2s 2 1
单位阶跃响应的图形用户界面。本例演示: (A )图形界面的大致生成过程; (B )静态文
本和编辑框的生成; (C )坐标网格控制键的形成; (D )如何使用该界面。
(1)产生图形窗和轴位框:如图10.1-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);
图10.1-1 产生坐标轴
(2 )在坐标框右侧生成作解释用的“静态文本”和可接收输入的“编辑框”:如图10.1-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;',...
1
'for k=1:length(z);',...
'y(:,k)=step(1,[1 2*z(k) 1],t);',...
'plot(t,y(:,k));',...
'if (length(z)>1) ,hold on,end,',...
'end;',...
'hold off,']);
图10.1-2 在图形界面中添加编辑框和文本框
(3 )形成坐标网格控制按键:如图10.1-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');
图10.1-3 添加了两个按键的图形界面
(4 )输入阻尼比系数 ,可得单位阶跃响应曲线:如图10.1-4 和图10.1-5 所示。
2
图10.1-4 输入标量阻尼比所得到的响应曲线