打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
matlab实用程序百例(3) 设置照明方式羽状图立体透视表面图形沿曲线移动的小球曲线转换按钮栅格控制按钮编辑框的使用:弹出式菜单
 matlab实用程序百例        实例27:设置照明方式
              function shili27
              h0=figure('toolbar','none',...
                  'position',[200 150 450 350],...
                  'name','实例27');
              subplot(2,2,1)
              sphere
              shading flat
              camlight left
              camlight right
              lighting flat
              colorbar
              axis off
              title('Figure1')
              subplot(2,2,2)
              sphere
              shading flat
              camlight left
              camlight right
              lighting gouraud
              colorbar
              axis off
              title('Figure2')
              subplot(2,2,3)
              sphere
              shading interp
              camlight right
              camlight left
              lighting phong
              colorbar
              axis off
              title('Figure3')
              subplot(2,2,4)
              sphere
              shading flat
              camlight left
              camlight right
              lighting none
              colorbar
              axis off
              title('Figure4')



              实例28:羽状图
              function shili28
              h0=figure('toolbar','none',...
                  'position',[200 150 450 350],...
                  'name','实例28');
              subplot(2,1,1)
              alpha=90:-10:0;
              r=ones(size(alpha));
              m=alpha*pi/180;
              n=r*10;
              [u,v]=pol2cart(m,n);
              feather(u,v)
              title('羽状图')
              axis([0 20 0 10])
              subplot(2,1,2)
              t=0:0.5:10;
              x=0.05+i;
              y=exp(-x*t);
              feather(y)
              title('复数矩阵的羽状图')

              实例29:立体透视(1)
              function shili29
              h0=figure('toolbar','none',...
                  'position',[200 150 450 250],...
                  'name','实例29');
              [x,y,z]=meshgrid(-2:0.1:2,...
                  -2:0.1:2,...
                  -2:0.1:2);
              v=x.*exp(-x.^2-y.^2-z.^2);
              grid on
              for i=-2:0.5:2;
                  h1=surf(linspace(-2,2,20),...
                      linspace(-2,2,20),...
                      zeros(20)+i);
                  rotate(h1,[1 -1 1],30)
                  dx=get(h1,'xdata');
                  dy=get(h1,'ydata');
                  dz=get(h1,'zdata');
                  delete(h1)
                  slice(x,y,z,v,[-2 2],2,-2)
                  hold on
                  slice(x,y,z,v,dx,dy,dz)
                  hold off
                  axis tight
                  view(-5,10)
                  drawnow
              end


              实例30:立体透视(2)
              function shili30
              h0=figure('toolbar','none',...
                  'position',[200 150 450 250],...
                  'name','实例30');
              [x,y,z]=meshgrid(-2:0.1:2,...
                  -2:0.1:2,...
                  -2:0.1:2);
              v=x.*exp(-x.^2-y.^2-z.^2);
              [dx,dy,dz]=cylinder;
              slice(x,y,z,v,[-2 2],2,-2)
              for i=-2:0.2:2
                  h=surface(dx+i,dy,dz);
                  rotate(h,[1 0 0],90)
                  xp=get(h,'xdata');
                  yp=get(h,'ydata');
                  zp=get(h,'zdata');
                  delete(h)
                  hold on
                  hs=slice(x,y,z,v,xp,yp,zp);
                  axis tight
                  xlim([-3 3])
                  view(-10,35)
                  drawnow
                  delete(hs)
                  hold off
              end


              实例31:表面图形
              function shili31
              h0=figure('toolbar','none',...
                  'position',[200 150 550 250],...
                  'name','实例31');
              subplot(1,2,1)
              x=rand(100,1)*16-8;
              y=rand(100,1)*16-8;
              r=sqrt(x.^2+y.^2)+eps;
              z=sin(r)./r;
              xlin=linspace(min(x),max(x),33);
              ylin=linspace(min(y),max(y),33);
              [X,Y]=meshgrid(xlin,ylin);
              Z=griddata(x,y,z,X,Y,'cubic');
              mesh(X,Y,Z)
              axis tight
              hold on
              plot3(x,y,z,'.','Markersize',20)
              subplot(1,2,2)
              k=5;
              n=2^k-1;
              theta=pi*(-n:2:n)/n;
              phi=(pi/2)*(-n:2:n)'/n;
              X=cos(phi)*cos(theta);
              Y=cos(phi)*sin(theta);
              Z=sin(phi)*ones(size(theta));
              colormap([0 0 0;1 1 1])
              C=hadamard(2^k);
              surf(X,Y,Z,C)
              axis square

              实例32:沿曲线移动的小球
              h0=figure('toolbar','none',...
                  'position',[198 56 408 468],...
                  'name','实例32');
              h1=axes('parent',h0,...
                  'position',[0.15 0.45 0.7 0.5],...
                  'visible','on');
              t=0:pi/24:4*pi;
              y=sin(t);
              plot(t,y,'b')
              n=length(t);
              h=line('color',[0 0.5 0.5],...
                  'linestyle','.',...
                  'markersize',25,...
                  'erasemode','xor');
              k1=uicontrol('parent',h0,...
                  'style','pushbutton',...
                  'position',[80 100 50 30],...
                  'string','开始',...
                  'callback',[...
                      'i=1;',...
                      'k=1;,',...
                      'm=0;,',...
                      'while 1,',...
                      'if k==0,',...
                      'break,',...
                      'end,',...
                      'if k~=0,',...
                      'set(h,''xdata'',t(i),''ydata'',y(i)),',...
                      'drawnow;,',...
                      'i=i+1;,',...
                      'if i>n,',...
                      'm=m+1;,',...
                      'i=1;,',...
                      'end,',...
                      'end,',...
                      'end']);
              k2=uicontrol('parent',h0,...
                  'style','pushbutton',...
                  'position',[180 100 50 30],...
                  'string','停止',...
                  'callback',[...
                      'k=0;,',...
                      'set(e1,''string'',m),',...
                      'p=get(h,''xdata'');,',...
                      'q=get(h,''ydata'');,',...        
                      'set(e2,''string'',p);,',...
                      'set(e3,''string'',q)']);
              k3=uicontrol('parent',h0,...
                  'style','pushbutton',...
                  'position',[280 100 50 30],...
                  'string','关闭',...
                  'callback','close');
              e1=uicontrol('parent',h0,...
                  'style','edit',...
                  'position',[60 30 60 20]);
              t1=uicontrol('parent',h0,...
                  'style','text',...
                  'string','循环次数',...
                  'position',[60 50 60 20]);
              e2=uicontrol('parent',h0,...
                  'style','edit',...
                  'position',[180 30 50 20]);
              t2=uicontrol('parent',h0,...
                  'style','text',...
                  'string','终点的X坐标值',...
                  'position',[155 50 100 20]);
              e3=uicontrol('parent',h0,...
                  'style','edit',...
                  'position',[300 30 50 20]);
              t3=uicontrol('parent',h0,...
                  'style','text',...
                  'string','终点的Y坐标值',...
                  'position',[275 50 100 20]);

              实例33:曲线转换按钮
              h0=figure('toolbar','none',...
                  'position',[200 150 450 250],...
                  'name','实例33');
              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

              实例34:栅格控制按钮
              h0=figure('toolbar','none',...
                  'position',[200 150 450 250],...
                  'name','实例34');
              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('开关按钮的使用')

              实例35:编辑框的使用
              h0=figure('toolbar','none',...
                  'position',[200 150 350 250],...
                  'name','实例35');
              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);

              实例36:弹出式菜单
              h0=figure('toolbar','none',...
                  'position',[200 150 450 250],...
                  'name','实例36');
              x=0:0.5: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('弹出式菜单的使用')
              hold on

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Matlab实用程序--图形应用2
几种常见窗函数及其MATLAB程序实现
Python图表绘制:matplotlib绘图库入门
[数字图像处理]空间滤波
MATLAB中subplot的用法
MATLAB画图格式设置(转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服