www.gusucode.com > MATLAB的100个例子 包括界面设计,图像处理等源码程序 > matlab实用程序百例1.txt
1-32是:图形应用篇 33-66是:界面设计篇 67-84是:图形处理篇 85-100是:数值分析篇 实例1:三角函数曲线(1) function shili01 h0=figure('toolbar','none',... 'position',[198 56 350 300],... 'name','实例01'); h1=axes('parent',h0,... 'visible','off'); x=-pi:0.05:pi; y=sin(x); plot(x,y); xlabel('自变量X'); ylabel('函数值Y'); title('SIN( )函数曲线'); grid on 实例2:三角函数曲线(2) function shili02 h0=figure('toolbar','none',... 'position',[200 150 450 350],... 'name','实例02'); x=-pi:0.05:pi; y=sin(x)+cos(x); plot(x,y,'-*r','linewidth',1); grid on xlabel('自变量X'); ylabel('函数值Y'); title('三角函数'); 实例3:图形的叠加 function shili03 h0=figure('toolbar','none',... 'position',[200 150 450 350],... 'name','实例03'); x=-pi:0.05:pi; y1=sin(x); y2=cos(x); plot(x,y1,... '-*r',... x,y2,... '--og'); grid on xlabel('自变量X'); ylabel('函数值Y'); title('三角函数'); 实例4:双y轴图形的绘制 function shili04 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例04'); x=0:900;a=1000;b=0.005; y1=2*x; y2=cos(b*x); [haxes,hline1,hline2]=plotyy(x,y1,x,y2,'semilogy','plot'); axes(haxes(1)) ylabel('semilog plot'); axes(haxes(2)) ylabel('linear plot'); 实例5:单个轴窗口显示多个图形 function shili05 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例05'); t=0:pi/10:2*pi; [x,y]=meshgrid(t); subplot(2,2,1) plot(sin(t),cos(t)) axis equal subplot(2,2,2) z=sin(x)-cos(y); plot(t,z) axis([0 2*pi -2 2]) subplot(2,2,3) h=sin(x)+cos(y); plot(t,h) axis([0 2*pi -2 2]) subplot(2,2,4) g=(sin(x).^2)-(cos(y).^2); plot(t,g) axis([0 2*pi -1 1]) 实例6:图形标注 function shili06 h0=figure('toolbar','none',... 'position',[200 150 450 400],... 'name','实例06'); t=0:pi/10:2*pi; h=plot(t,sin(t)); xlabel('t=0到2\pi','fontsize',16); ylabel('sin(t)','fontsize',16); title('\it{从 0to2\pi 的正弦曲线}','fontsize',16) x=get(h,'xdata'); y=get(h,'ydata'); imin=find(min(y)==y); imax=find(max(y)==y); text(x(imin),y(imin),... ['\leftarrow最小值=',num2str(y(imin))],... 'fontsize',16) text(x(imax),y(imax),... ['\leftarrow最大值=',num2str(y(imax))],... 'fontsize',16) 实例7:条形图形 function shili07 h0=figure('toolbar','none',... 'position',[200 150 450 350],... 'name','实例07'); tiao1=[562 548 224 545 41 445 745 512]; tiao2=[47 48 57 58 54 52 65 48]; t=0:7; bar(t,tiao1) xlabel('X轴'); ylabel('TIAO1值'); h1=gca; h2=axes('position',get(h1,'position')); plot(t,tiao2,'linewidth',3) set(h2,'yaxislocation','right','color','none','xticklabel',[]) 实例8:区域图形 function shili08 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例08'); x=91:95; profits1=[88 75 84 93 77]; profits2=[51 64 54 56 68]; profits3=[42 54 34 25 24]; profits4=[26 38 18 15 4]; area(x,profits1,'facecolor',[0.5 0.9 0.6],... 'edgecolor','b',... 'linewidth',3) hold on area(x,profits2,'facecolor',[0.9 0.85 0.7],... 'edgecolor','y',... 'linewidth',3) hold on area(x,profits3,'facecolor',[0.3 0.6 0.7],... 'edgecolor','r',... 'linewidth',3) hold on area(x,profits4,'facecolor',[0.6 0.5 0.9],... 'edgecolor','m',... 'linewidth',3) hold off set(gca,'xtick',[91:95]) set(gca,'layer','top') gtext('\leftarrow第一季度销量') gtext('\leftarrow第二季度销量') gtext('\leftarrow第三季度销量') gtext('\leftarrow第四季度销量') xlabel('年','fontsize',16); ylabel('销售量','fontsize',16); 实例9:饼图的绘制 function shili09 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例09'); t=[54 21 35; 68 54 35; 45 25 12; 48 68 45; 68 54 69]; x=sum(t); h=pie(x); textobjs=findobj(h,'type','text'); str1=get(textobjs,{'string'}); val1=get(textobjs,{'extent'}); oldext=cat(1,val1{:}); names={'商品一:';'商品二:';'商品三:'}; str2=strcat(names,str1); set(textobjs,{'string'},str2) val2=get(textobjs,{'extent'}); newext=cat(1,val2{:}); offset=sign(oldext(:,1)).*(newext(:,3)-oldext(:,3))/2; pos=get(textobjs,{'position'}); textpos=cat(1,pos{:}); textpos(:,1)=textpos(:,1)+offset; set(textobjs,{'position'},num2cell(textpos,[3,2])) 实例10:阶梯图 function shili10 h0=figure('toolbar','none',... 'position',[200 150 450 400],... 'name','实例10'); a=0.01; b=0.5; t=0:10; f=exp(-a*t).*sin(b*t); stairs(t,f) hold on plot(t,f,':*') hold off glabel='函数e^{-(\alpha*t)}sin\beta*t的阶梯图'; gtext(glabel,'fontsize',16) xlabel('t=0:10','fontsize',16) axis([0 10 -1.2 1.2]) 实例11:枝干图 function shili11 h0=figure('toolbar','none',... 'position',[200 150 450 350],... 'name','实例11'); x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); h1=stem(x,y1+y2); hold on h2=plot(x,y1,'^r',x,y2,'*g'); hold off h3=[h1(1);h2]; legend(h3,'y1+y2','y1=sin(x)','y2=cos(x)') xlabel('自变量X'); ylabel('函数值Y'); title('正弦函数与余弦函数的线性组合'); 实例12:罗盘图 function shili12 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例12'); winddirection=[54 24 65 84 256 12 235 62 125 324 34 254]; windpower=[2 5 5 3 6 8 12 7 6 14 10 8]; rdirection=winddirection*pi/180; [x,y]=pol2cart(rdirection,windpower); compass(x,y); desc={'风向和风力', '北京气象台', '10月1日0:00到', '10月1日12:00'}; gtext(desc) 实例13:轮廓图 function shili13 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例13'); [th,r]=meshgrid((0:10:360)*pi/180,0:0.05:1); [x,y]=pol2cart(th,r); z=x+i*y; f=(z.^4-1).^(0.25); contour(x,y,abs(f),20) axis equal xlabel('实部','fontsize',16); ylabel('虚部','fontsize',16); h=polar([0 2*pi],[0 1]); delete(h) hold on contour(x,y,abs(f),20) 实例14:交互式图形 function shili14 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例14'); axis([0 10 0 10]); hold on x=[]; y=[]; n=0; disp('单击鼠标左键点取需要的点'); disp('单击鼠标右键点取最后一个点'); but=1; while but==1 [xi,yi,but]=ginput(1); plot(xi,yi,'bo') n=n+1; disp('单击鼠标左键点取下一个点'); x(n,1)=xi; y(n,1)=yi; end t=1:n; ts=1:0.1:n; xs=spline(t,x,ts); ys=spline(t,y,ts); plot(xs,ys,'r-'); hold off 实例14:交互式图形 function shili14 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例14'); axis([0 10 0 10]); hold on x=[]; y=[]; n=0; disp('单击鼠标左键点取需要的点'); disp('单击鼠标右键点取最后一个点'); but=1; while but==1 [xi,yi,but]=ginput(1); plot(xi,yi,'bo') n=n+1; disp('单击鼠标左键点取下一个点'); x(n,1)=xi; y(n,1)=yi; end t=1:n; ts=1:0.1:n; xs=spline(t,x,ts); ys=spline(t,y,ts); plot(xs,ys,'r-'); hold off 实例15:变换的傅立叶函数曲线 function shili15 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例15'); axis equal m=moviein(20,gcf); set(gca,'nextplot','replacechildren') h=uicontrol('style','slider','position',... [100 10 500 20],'min',1,'max',20) for j=1:20 plot(fft(eye(j+16))) set(h,'value',j) m(:,j)=getframe(gcf); end clf; axes('position',[0 0 1 1]); movie(m,30) 实例16:劳伦兹非线形方程的无序活动 function shili15 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例15'); axis equal m=moviein(20,gcf); set(gca,'nextplot','replacechildren') h=uicontrol('style','slider','position',... [100 10 500 20],'min',1,'max',20) for j=1:20 plot(fft(eye(j+16))) set(h,'value',j) m(:,j)=getframe(gcf); end clf; axes('position',[0 0 1 1]); movie(m,30) 实例17:填充图 function shili17 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例17'); t=(1:2:15)*pi/8; x=sin(t); y=cos(t); fill(x,y,'r') axis square off text(0,0,'STOP',... 'color',[1 1 1],... 'fontsize',50,... 'horizontalalignment','center') 例18:条形图和阶梯形图 function shili18 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例18'); subplot(2,2,1) x=-3:0.2:3; y=exp(-x.*x); bar(x,y) title('2-D Bar Chart') subplot(2,2,2) x=-3:0.2:3; y=exp(-x.*x); bar3(x,y,'r') title('3-D Bar Chart') subplot(2,2,3) x=-3:0.2:3; y=exp(-x.*x); stairs(x,y) title('Stair Chart') subplot(2,2,4) x=-3:0.2:3; y=exp(-x.*x); barh(x,y) title('Horizontal Bar Chart') 实例19:三维曲线图 function shili19 h0=figure('toolbar','none',... 'position',[200 150 450 400],... 'name','实例19'); subplot(2,1,1) x=linspace(0,2*pi); y1=sin(x); y2=cos(x); y3=sin(x)+cos(x); z1=zeros(size(x)); z2=0.5*z1; z3=z1; plot3(x,y1,z1,x,y2,z2,x,y3,z3) grid on xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('Figure1:3-D Plot') subplot(2,1,2) x=linspace(0,2*pi); y1=sin(x); y2=cos(x); y3=sin(x)+cos(x); z1=zeros(size(x)); z2=0.5*z1; z3=z1; plot3(x,z1,y1,x,z2,y2,x,z3,y3) grid on xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('Figure2:3-D Plot') 实例20:图形的隐藏属性 function shili20 h0=figure('toolbar','none',... 'position',[200 150 450 300],... 'name','实例20'); subplot(1,2,1) [x,y,z]=sphere(10); mesh(x,y,z) axis off title('Figure1:Opaque') hidden on subplot(1,2,2) [x,y,z]=sphere(10); mesh(x,y,z) axis off title('Figure2:Transparent') hidden off 实例21PEAKS函数曲线 function shili21 h0=figure('toolbar','none',... 'position',[200 100 450 450],... 'name','实例21'); [x,y,z]=peaks(30); subplot(2,1,1) x=x(1,:); y=y(:,1); i=find(y>0.8&y<1.2); j=find(x>-0.6&x<0.5); z(i,j)=nan*z(i,j); surfc(x,y,z) xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('Figure1:surfc函数形成的曲面') subplot(2,1,2) x=x(1,:); y=y(:,1); i=find(y>0.8&y<1.2); j=find(x>-0.6&x<0.5); z(i,j)=nan*z(i,j); surfl(x,y,z) xlabel('X轴'); ylabel('Y轴'); zlabel('Z轴'); title('Figure2:surfl函数形成的曲面') 实例22:片状图 function shili22 h0=figure('toolbar','none',... 'position',[200 150 550 350],... 'name','实例22'); subplot(1,2,1) x=rand(1,20); y=rand(1,20); z=peaks(x,y*pi); t=delaunay(x,y); trimesh(t,x,y,z) hidden off title('Figure1:Triangular Surface Plot'); subplot(1,2,2) x=rand(1,20); y=rand(1,20); z=peaks(x,y*pi); t=delaunay(x,y); trisurf(t,x,y,z) title('Figure1:Triangular Surface Plot'); 实例23:视角的调整 function shili23 h0=figure('toolbar','none',... 'position',[200 150 450 350],... 'name','实例23'); x=-5:0.5:5; [x,y]=meshgrid(x); r=sqrt(x.^2+y.^2)+eps; z=sin(r)./r; subplot(2,2,1) surf(x,y,z) xlabel('X-axis') ylabel('Y-axis') zlabel('Z-axis') title('Figure1') view(-37.5,30) subplot(2,2,2) surf(x,y,z) xlabel('X-axis') ylabel('Y-axis') zlabel('Z-axis') title('Figure2') view(-37.5+90,30) subplot(2,2,3) surf(x,y,z) xlabel('X-axis') ylabel('Y-axis') zlabel('Z-axis') title('Figure3') view(-37.5,60) subplot(2,2,4) surf(x,y,z) xlabel('X-axis') ylabel('Y-axis') zlabel('Z-axis') title('Figure4') view(180,0) 实例24:向量场的绘制 function shili24 h0=figure('toolbar','none',... 'position',[200 150 450 350],... 'name','实例24'); subplot(2,2,1) z=peaks; ribbon(z) title('Figure1') subplot(2,2,2) [x,y,z]=peaks(15); [dx,dy]=gradient(z,0.5,0.5); contour(x,y,z,10) hold on quiver(x,y,dx,dy) hold off title('Figure2') subplot(2,2,3) [x,y,z]=peaks(15); [nx,ny,nz]=surfnorm(x,y,z); surf(x,y,z) hold on quiver3(x,y,z,nx,ny,nz) hold off title('Figure3') subplot(2,2,4) x=rand(3,5); y=rand(3,5); z=rand(3,5); c=rand(3,5); fill3(x,y,z,c) grid on title('Figure4') 实例25:灯光定位 function shili25 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例25'); vert=[1 1 1;1 2 1; 2 2 1;2 1 1; 1 1 2;1 2 2; 2 2 2;2 1 2]; fac=[1 2 3 4;2 6 7 3; 4 3 7 8;1 5 8 4; 1 2 6 5;5 6 7 8]; grid off sphere(36) h=findobj('type','surface'); set(h,'facelighting','phong',... 'facecolor',... 'interp',... 'edgecolor',[0.4 0.4 0.4],... 'backfacelighting',... 'lit') hold on patch('faces',fac,'vertices',vert,... 'facecolor','y'); light('position',[1 3 2]); light('position',[-3 -1 3]); material shiny axis vis3d off hold off 实例26:柱状图 function shili26 h0=figure('toolbar','none',... 'position',[200 50 450 450],... 'name','实例26'); subplot(2,1,1) x=[5 2 1 8 7 3 9 8 6 5 5 5 4 3 2]; bar(x) xlabel('X轴'); ylabel('Y轴'); title('第一子图'); subplot(2,1,2) y=[5 2 1 8 7 3 9 8 6 5 5 5 4 3 2]; barh(y) xlabel('X轴'); ylabel('Y轴'); title('第二子图'); 实例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('弹出式菜单的使用') 实例37:滑标的使用 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例37'); [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''))'); 实例38:多选菜单 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例38'); [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']); 实例39:菜单控制的使用 h0=figure('toolbar','none',... 'position',[200 150 450 250],... 'name','实例39'); 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); 实例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 450 468],... 'name','实例43'); 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',... 'backgroundcolor',[0.75 0.75 0.75]); u11=uimenu('parent',u1,... 'label','gouraud',... 'tag','u11',... 'backgroundcolor',[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',... 'backgroundcolor',[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',... 'backgroundcolor',[0.75 0.75 0.75]); u21=uimenu('parent',u2,... 'label','reverselit',... 'tag','u21',... 'checked','on',... 'backgroundcolor',[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',... 'backgroundcolor',[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'); 实例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'); 实例46:曲线色彩的修改 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]);