实例40:UIMENU菜单的应用
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例40');
h1=uimenu(gcf,'label','函数');
h11=uimenu(h1,'label','轮廓图',...
'callback',[...
'set(h31,''checked'',''on''),',...
'set(h32,''checked'',''off''),',...
'[x,y,z]=peaks;,',...
'contour3(x,y,z,30)']);
h12=uimenu(h1,'label','高斯分布',...
'callback',[...
'set(h31,''checked'',''on''),',...
'set(h32,''checked'',''off''),',...
'mesh(peaks);,',...
'axis tight']);
h13=uimenu(h1,'label','Sinc函数',...
'callback',[...
'set(h31,''checked'',''on''),',...
'set(h32,''checked'',''off''),',...
'[x,y]=meshgrid(-8:0.5:8);,',...
'r=sqrt(x.^2+y.^2)+eps;,',...
'z=sin(r)./r;,',...
'mesh(x,y,z)']);
h2=uimenu(gcf,'label','色彩');
hl2(1)=uimenu(h2,'label','Default',...
'checked','on',...
'callback',...
[...
'set(hl2,''checked'',''off''),',...
'set(hl2(1),''checked'',''on''),',...
'colormap(''default'')']);
hl2(2)=uimenu(h2,'label','spring',...
'callback',...
[...
'set(hl2,''checked'',''off''),',...
'set(hl2(2),''checked'',''on''),',...
'colormap(spring)']);
hl2(3)=uimenu(h2,'label','Summer',...
'callback',...
[...
'set(hl2,''checked'',''off''),',...
'set(hl2(3),''checked'',''on''),',...
'colormap(summer)']);
hl2(4)=uimenu(h2,'label','Autumn',...
'callback',...
[...
'set(hl2,''checked'',''off''),',...
'set(hl2(4),''checked'',''on''),',...
'colormap(autumn)']);
hl2(5)=uimenu(h2,'label','Winter',...
'callback',...
[...
'set(hl2,''checked'',''off''),',...
'set(hl2(5),''checked'',''on''),',...
'colormap(winter)']);
h3=uimenu(gcf,'label','坐标选项');
h31=uimenu(h3,'label','Axis on',...
'callback',...
[...
'axis on,',...
'set(h31,''checked'',''on''),',...
'set(h32,''checked'',''off'')']);
h32=uimenu(h3,'label','Axis off',...
'callback',...
[...
'axis off,',...
'set(h32,''checked'',''on''),',...
'set(h31,''checked'',''off'')']);
实例41:除法计算器
h=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例41');
h1=uicontrol(gcf,'style','edit',...
'position',[80 200 100 20],...
'HorizontalAlignment','right',...
'callback',['m=get(h1,''string'');,',...
'a=str2num(m);']);
h2=uicontrol(gcf,'style','edit',...
'HorizontalAlignment','right',...
'position',[80 150 100 20],...
'callback',['n=get(h2,''string'');,',...
'b=str2num(n);']);
h3=uicontrol(gcf,'style','text',...
'string','被除数',...
'position',[80 230 100 20]);
h4=uicontrol(gcf,'style','edit',...
'position',[80 50 100 20]);
h5=uicontrol(gcf,'style','pushbutton',...
'position',[80 100 100 20],...
'string','=',...
'callback',[...
'if b==0,',...
'h7=errordlg(''除数不能为0!'',''error'',''on'');,',...
'else,',...
'k=a/b;,',...
'c=num2str(k);,',...
'set(h4,''string'',c),',...
'end']);
h8=uicontrol(gcf,'style','text',...
'string','除数',...
'position',[80 175 100 20]);
h9=uicontrol(gcf,'style','text',...
'string','商',...
'position',[80 75 100 20]);
实例42:单选框的使用
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例42');
x=0:0.5:2*pi;
y=sin(x);
plot(x,y)
grid on
set(gcf,'toolbar','none')
g=set(gca,'position',[0.2 0.2 0.6 0.6]);
huidiao1=[...
'grid on,',...
'set(box_on,''value'',1),',...
'set(box_off,''value'',0),'];
huidiao2=[...
'grid off,',...
'set(box_off,''value'',1),',...
'set(box_on,''value'',0),'];
box_on=uicontrol(gcf,'style','radio',...
'position',[5 50 50 20],...
'string','grid on',...
'value',1,...
'callback',huidiao1);
box_off=uicontrol(gcf,'style','radio',...
'position',[5 20 50 20],...
'string','grid off',...
'value',0,...
'callback',huidiao2);
title('无线按钮的使用')
实例43:曲线色彩的修改
h0=figure('toolbar','none',...
'position',[198 56 408 468],...
'name','my second gui');
h1=axes('parent',h0,...
'position',[0.15 0.45 0.7 0.5],...
'visible','on');
x=0:0.1:2*pi;
k=plot(x,sin(x));
xlabel('自变量X');
ylabel('函数值Y');
title('图形色彩改变');
p1=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor','r',...
'position',[60 100 50 30],...
'callback','set(k,''color'',''r'')');
p2=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor','g',...
'position',[170 100 50 30],...
'callback','set(k,''color'',''g'')');
p3=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor','b',...
'position',[280 100 50 30],...
'callback','set(k,''color'',''b'')');
p4=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor',[1 1 1],...
'fontsize',20,...
'fontweight','demi',...
'string','关闭',...
'position',[150 30 80 60],...
'callback','close');
t1=uicontrol('parent',h0,...
'style','text',...
'string','红色',...
'fontsize',12,...
'fontweight','demi',...
'position',[60 120 50 20]);
t2=uicontrol('parent',h0,...
'style','text',...
'string','绿色',...
'fontsize',12,...
'fontweight','demi',...
'position',[170 120 50 20]);
t3=uicontrol('parent',h0,...
'style','text',...
'string','蓝色',...
'fontsize',12,...
'fontweight','demi',...
'position',[280 120 50 20]);
实例44:改变坐标轴范围
h0=figure('toolbar','none',...
'position',[198 56 408 468],...
'name','实例44');
h1=axes('parent',h0,...
'position',[0.15 0.45 0.7 0.5],...
'visible','on');
e1=uicontrol('parent',h0,...
'style','edit',...
'string',1,...
'position',[50 120 50 20]);
t1=uicontrol('parent',h0,...
'style','text',...
'string','X轴最小值',...
'position',[35 150 80 20]);
e2=uicontrol('parent',h0,...
'style','edit',...
'string',5,...
'position',[50 60 50 20]);
t2=uicontrol('parent',h0,...
'style','text',...
'string','X轴最大值',...
'position',[35 90 80 20]);
e3=uicontrol('parent',h0,...
'style','edit',...
'string',1,...
'position',[150 120 50 20]);
t3=uicontrol('parent',h0,...
'style','text',...
'string','Y轴最小值',...
'position',[135 150 80 20]);
e4=uicontrol('parent',h0,...
'style','edit',...
'string',5,...
'position',[150 60 50 20]);
t4=uicontrol('parent',h0,...
'style','text',...
'string','Y轴最大值',...
'position',[135 90 80 20]);
e5=uicontrol('parent',h0,...
'style','edit',...
'string',20,...
'position',[250 120 50 20]);
t5=uicontrol('parent',h0,...
'style','text',...
'horizontalalignment','left',...
'string','点数',...
'position',[250 150 30 20]);
b1=uicontrol('parent',h0,...
'style','pushbutton',...
'string','绘图',...
'position',[250 60 60 40],...
'callback',[...
'a=str2num(get(e1,''string''));,',...
'b=str2num(get(e2,''string''));,',...
'c=str2num(get(e3,''string''));,',...
'd=str2num(get(e4,''string''));,',...
'n=str2num(get(e5,''string''));,',...
'xgrid=linspace(-abs(a),abs(a),n);,',...
'ygrid=linspace(-abs(b),abs(b),n);,',...
'[x,y]=meshgrid(xgrid,ygrid);,',...
'z=c*sqrt(d-y.*y/b/b-x.*x/a/a);,',...
'u=1;,',...
'z1=real(z);,',...
'for k=2:n-1,',...
'for j=2:n-1,',...
'if imag(z(k,j))~=0,',...
'z1(k,j)=0;,',...
'end,',...
'if all(imag(z([k-1:k+1],[j-1:j+1])))~=0,',...
'z1(k,j)=nan;,',...
'end,',...
'end,',...
'end,',...
'surf(x,y,z1),',...
'hold on,',...
'if u==1,',...
'z2=-z1;,',...
'surf(x,y,z2),',...
'axis([-abs(a),abs(a),-abs(b),abs(b),-abs(c),abs(c)]);,',...
'end,',...
'xlabel(''x'');,',...
'ylabel(''y'');,',...
'zlabel(''z'');,',...
'hold off']);
b2=uicontrol('parent',h0,...
'style','pushbutton',...
'string','关闭',...
'position',[150 10 60 20],...
'callback','close');
实例45:简单运算器
h1=uicontrol(gcf,'style','radio',...
'string','加',...
'value',1,...
'position',[20 150 40 20],...
'callback',[...
'k=1;,',...
'set(h1,''value'',1),',...
'set(h2,''value'',0),',...
'set(h3,''value'',0)']);
h2=uicontrol(gcf,'style','radio',...
'string','减',...
'position',[20 110 40 20],...
'callback',[...
'k=2;,',...
'set(h2,''value'',1),',...
'set(h1,''value'',0),',...
'set(h3,''value'',0)']);
h3=uicontrol(gcf,'style','radio',...
'string','乘',...
'position',[20 70 40 20],...
'callback',[...
'k=3;,',...
'set(h3,''value'',1),',...
'set(h2,''value'',0),',...
'set(h1,''value'',0)']);
e1=uicontrol(gcf,'style','edit',...
'position',[80 150 100 20]);
e2=uicontrol(gcf,'style','edit',...
'position',[80 110 100 20]);
e3=uicontrol(gcf,'style','edit',...
'position',[80 70 100 20]);
b1=uicontrol(gcf,'style','pushbutton',...
'string','运算',...
'position',[200 150 80 30],...
'callback',[...
'x=str2num(get(e1,''string''));,',...
'y=str2num(get(e2,''string''));,',...
'switch k,',...
'case 1,',...
'z=x+y;,',...
'case 2,',...
'z=x-y;,',...
'case 3,',...
'z=x*y;,',...
'end,',...
'set(e3,''string'',num2str(z))']);
b2=uicontrol(gcf,'style','pushbutton',...
'string','退出',...
'position',[200 100 80 30],...
'callback','close');