【MATLAB100个实用小技巧】——界面设计(33-43)

文章目录

  • 前言
  • 系列文章
  • 33. 曲线转换按钮
  • 34. 栅格控制按钮
  • 35. 编辑框的使用
  • 36. 弹出式菜单
  • 37. 滑标的使用
  • 38. 多选菜单
  • 39. 菜单控制的使用
  • 40. UIMENU 菜单的应用
  • 41. 除法计算器
  • 42. 单选框的使用
  • 43. 添加环境效果

前言

MATLAB是一个功能强大的软件,我们可以利用MATLAB进行绘图、算法验证、仿真实验等等。在学习MATLAB的过程中,繁多的命令与代码往往容易使我们脑容量过载请添加图片描述
本系列将总结一些常见的MATLAB编程小技巧
可能有些地方会有些错误或者是不太完善的,还请大家在评论区直接指出❤️❤️❤️

系列文章

【MATLAB100个实用小技巧】——图形应用(1-10)
【MATLAB100个实用小技巧】——图形应用(11-20)
【MATLAB100个实用小技巧】——图形应用(21-32)
【MATLAB100个实用小技巧】——界面设计(33-43)
【MATLAB100个实用小技巧】——界面设计(44-55)
【MATLAB100个实用小技巧】——界面设计(56-66)
【MATLAB100个实用小技巧】——图形处理(67-75)
【MATLAB100个实用小技巧】——图形处理(76-84)
【MATLAB100个实用小技巧】——数值分析(85-100)

33. 曲线转换按钮

重点 huidiao hm=uicontrol(gcf,'style','pushbutton', 'string',' 余 弦 函 数 ', 'callback',huidiao);
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
x=0:0.5:2*pi;
y=sin(x);
h=plot(x,y); 
grid on;
huidiao=[...
    'if i==1,',...
    'i=0;,',...
    'y=cos(x);,',...
    'delete(h),',...
    'set(hm,''string'',''正弦函数''),',...
    'h=plot(x,y);,',...
    'grid on,',...
    'else if i==0,',...
    'i=1;,',...
    'y=sin(x);,',...
    'set(hm,''string'',''余弦函数''),',... 
    'delete(h),',...
    'h=plot(x,y);,',... 
    'grid on,',...
    'end,',... 
    'end'];
hm=uicontrol(gcf,'style','pushbutton', 'string',' 余 弦 函 数 ', 'callback',huidiao);
i=1;
set(hm,'position',[250 20 60 20]);
set(gca,'position',[0.2 0.2 0.6 0.6]);
title('按钮的使用');
hold on;

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第1张图片【MATLAB100个实用小技巧】——界面设计(33-43)_第2张图片

34. 栅格控制按钮

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
x=0:0.5:2*pi;
y=sin(x);
plot(x,y);
huidiao1=[...
'set(h_toggle2,''value'',0),',...
'grid on,',...
];
huidiao2=[...
'set(h_toggle1,''value'',0),',...
'grid off,',...
];
h_toggle1=uicontrol(gcf,'style','togglebutton',... 
'string','grid on',...
'value',0,...
'position',[20 45 50 20],... 
'callback',huidiao1);

h_toggle2=uicontrol(gcf,'style','togglebutton',... 
'string','grid off',...
'value',0,...
'position',[20 20 50 20],... 
'callback',huidiao2);
set(gca,'position',[0.2 0.2 0.6 0.6]);
title('开关按钮的使用');

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第3张图片

35. 编辑框的使用

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
f='Please input the letter'; 

huidiao1=[...
'g=upper(f);,',... 
'set(h2_edit,''string'',g),',...
];

huidiao2=[...
'g=lower(f);,',... 
'set(h2_edit,''string'',g),',...
];

h1_edit=uicontrol(gcf,'style','edit',... 
    'position',[100 200 100 50],...
'HorizontalAlignment','left',... 
'string','Please input the letter',... 
'callback','f=get(h1_edit,''string'');',...
'background','w',...
'max',5,...
'min',1); 
h2_edit=uicontrol(gcf,'style','edit',...
'HorizontalAlignment','left',... 
'position',[100 100 100 50],...
'background','w',...
'max',5,...
'min',1);
h1_button=uicontrol(gcf,'style','pushbutton',...
'string','小写变大写',...
'position',[100 45 100 20],...
'callback',huidiao1); 
h2_button=uicontrol(gcf,'style','pushbutton',...
'string','大写变小写',...
'position',[100 20 100 20],...
'callback',huidiao2);

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第4张图片

36. 弹出式菜单

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
x=0:0.1:2*pi;
y=sin(x);
h=plot(x,y); grid on
hm=uicontrol(gcf,'style','popupmenu',...
    'string',...
    'sin(x)|cos(x)|sin(x)+cos(x)|exp(-sin(x))',... 
    'position',[250 20 50 20]);
set(hm,'value',1);
huidiao=[...
'v=get(hm,''value'');,',...
'switch v,',...
'case 1,',...
'delete(h),',...
'y=sin(x);,',...
'h=plot(x,y);,',... 
'grid on,',...
'case 2,',...
'delete(h),',...
'y=cos(x);,',...
'h=plot(x,y);,',... 
'grid on,',...
'case 3,',...
'delete(h),',...
'y=sin(x)+cos(x);,',...
'h=plot(x,y);,',... 
'grid on,',...
'case 4,',...
'delete(h),',... 
'y=exp(-sin(x));,',...
'h=plot(x,y);,',... 
'grid on,',... 
'end'];
set(hm,'callback',huidiao);
set(gca,'position',[0.2 0.2 0.6 0.6]);
title('弹出式菜单的使用');

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第5张图片

37. 滑标的使用

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
[x,y]=meshgrid(-8:0.5:8);

r=sqrt(x.^2+y.^2)+eps; 
z=sin(r)./r;
h0=mesh(x,y,z);
h1=axes('position',... 
[0.2 0.2 0.5 0.5],...
'visible','off');
htext=uicontrol(gcf,...
'units','points',...
'position',[20 30 45 15],...
'string','brightness',...
'style','text');
hslider=uicontrol(gcf,...
'units','points',...
'position',[10 10 300 15],...
'min',-1,...
'max',1,...
'style','slider',... 
'callback',...
'brighten(get(hslider,''value''))');

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第6张图片

38. 多选菜单

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
[x,y]=meshgrid(-8:0.5:8);
r=sqrt(x.^2+y.^2)+eps; 
z=sin(r)./r;
h0=mesh(x,y,z);
hlist=uicontrol(gcf,'style','listbox',...
'string','default|spring|summer|autumn|winter',... 
'max',5,...
'min',1,...
'position',[20 20 80 100],...
'callback',[...
'k=get(hlist,''value'');,',... 
'switch k,',...
'case 1,',...
'colormap default,',...
'case 2,',...
'colormap spring,',...
'case 3,',...
'colormap summer,',...
'case 4,',...
'colormap autumn,',...
'case 5,',...
'colormap winter,',...
'end']);

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第7张图片

39. 菜单控制的使用

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
x=0:0.5:2*pi;
y=cos(x);
h=plot(x,y); 
grid on;
set(gcf,'toolbar','none');
hm=uimenu('label','example');
huidiao1=[...
'set(hm_gridon,''checked'',''on''),',...
'set(hm_gridoff,''checked'',''off''),',...
'grid on'];
huidiao2=[...
'set(hm_gridoff,''checked'',''on''),',...
'set(hm_gridon,''checked'',''off''),',...
'grid off'];
hm_gridon=uimenu(hm,'label','grid on',... 
    'checked','on',...
'callback',huidiao1); 
hm_gridoff=uimenu(hm,'label','grid off',...
'checked','off',... 
'callback',huidiao2);

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第8张图片

40. UIMENU 菜单的应用

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
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'')']);

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第9张图片

41. 除法计算器

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
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]);

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第10张图片

42. 单选框的使用

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
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('无线按钮的使用');

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第11张图片

43. 添加环境效果

重点
代码

h0 = figure('ToolBar','none','Position',[150 250 500 400],'name','Curve of sinandcos()');
h1=axes('parent',h0,... 
    'position',[0.15 0.45 0.7 0.5],...
'visible','off');

sphere;
h=findobj('type','surface'); 
shading interp;
axis equal;
l=light('position',[0 -2 1]);
k(1)=get(h,'specularstrength');
k(2)=get(h,'diffusestrength');
k(3)=get(h,'specularexponent');
k(4)=get(h,'specularcolorreflectance');

u1=uimenu('parent',h0,...
'label','灯光效果',...
'tag','u1',...
'Foregroundcolor',[0.75 0.75 0.75]); 

u11=uimenu('parent',u1,...
'label','gouraud',...
'tag','u11',...
'Foregroundcolor',[0.75 0.75 0.75],... 
'callback',[...
'set(u11,''checked'',''on'');,',...
'set(u12,''checked'',''off'');,',...
'set(h,''facelighting'',''gouraud'')']);
u12=uimenu('parent',u1,...
'label','phong',...
'tag','u12',...
'Foregroundcolor',[0.75 0.75 0.75],... 
'callback',[...
'set(u11,''checked'',''off'');,',...
'set(u12,''checked'',''on'');,',...
'set(h,''facelighting'',''gouraud'')']); 
u2=uimenu('parent',h0,...
'label','背面灯光',...
'tag','u2',...
'Foregroundcolor',[0.75 0.75 0.75]);
u21=uimenu('parent',u2,...
'label','reverselit',...
'tag','u21',...
'checked','on',...
'Foregroundcolor',[0.75 0.75 0.75],... 
'callback',[...
'set(u21,''checked'',''on'');,',...
'set(u22,''checked'',''off'');,',...
'set(h,''backfacelighting'',''reverselit'')']);
u22=uimenu('parent',u2,...
'label','reverselit',...
'tag','u22',...
'Foregroundcolor',[0.75 0.75 0.75],... 
'callback',[...
'set(u21,''checked'',''off'');,',...
'set(u22,''checked'',''on'');,',...
'set(h,''backfacelighting'',''reverselit'')']); 
s1=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s1',...
'min',0,...
'max',1,...
'value',k(1),...
'position',[20 80 100 15],...
'callback',[...
's1value=get(s1,''value'');,',...
'set(h,''specularstrength'',s1value)']); 
t1=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t1',...
'string','镜面反射强度',... 
'position',[20 97 100 15]);
s2=uicontrol('parent',h0,... 
    'units','points',...
'style','slider',...
'tag','s2',...
'min',0,...
'max',1,...
'value',k(2),...
'position',[20 30 100 15],...
'callback',[...
's2value=get(s2,''value'');,',...
'set(h,''diffusestrength'',s2value)']); 
t2=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t2',...
'string','漫反射强度',... 
'position',[20 47 100 15]);
s3=uicontrol('parent',h0,...
    'units','points',...
'style','slider',...
'tag','s3',...
'min',0.1,...
'max',1,...
'value',k(3)/20,...
'position',[220 80 100 15],...
'callback',[...
's3value=get(s3,''value'')+eps;,',...
'set(h,''specularexponent'',20*s3value)']);
t3=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t3',...
'string',' 镜 面 指 数 ',...
'position',[220 97 100 15]);
s4=uicontrol('parent',h0,...
    'units','points',...
'style','slider',...
'tag','s4',...
'min',0,...
'max',1,...
'value',k(4),...
'position',[220 30 100 15],...
'callback',[...
's4value=get(s4,''value'');,',...
'set(h,''specularcolorreflectance'',s4value)']);
t4=uicontrol('parent',h0,... 
    'units','points',...
'style','text',...
'tag','t1',...
'string','镜面颜色反射比',... 
'position',[220 47 100 15]);
b1=uicontrol('parent',h0,...
    'units','points',...
'style','pushbutton',...
'tag','b1',...
'string','关闭',...
'position',[145 45 50 30],...
'callback','close');

效果
【MATLAB100个实用小技巧】——界面设计(33-43)_第12张图片

你可能感兴趣的:(MATLAB100个编程小技巧,matlab,图像处理,开发语言)