Floyd最短路算法的MATLAB程序 %floyd.m %采用floyd算法计算图a中每对顶点最短路 %d是矩离矩阵 %r是路由矩阵 function [d,r]=floyd(a) n=size(a,1); d=a; for i=1:n for j=1:n r(i,j)=j; end end r for k=1:n for i=1:n for j=1:n if d(i,k)+d(k,j)<d(i,j) d(i,j)=d(i,k)+d(k,j); r(i,j)=r(i,k) end end end k d r end 数学算法(2) 实例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'); 实例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 实例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') 实例21:PEAKS函数曲线 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') 实例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('第二子图'); 实例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 实例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 实例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]); 实例47:曲线标记 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',... 'string','+',... 'fontsize',20,... 'foregroundcolor',[1 1 1],... 'backgroundcolor',[0 0 0],... 'position',[60 100 50 20],... 'callback','set(k,''marker'',''+'')'); p2=uicontrol('parent',h0,... 'style','pushbutton',... 'string','o',... 'fontsize',20,... 'foregroundcolor',[1 1 1],... 'backgroundcolor',[0 0 0],... 'position',[170 100 50 20],... 'callback','set(k,''marker'',''o'')'); p3=uicontrol('parent',h0,... 'style','pushbutton',... 'string','x',... 'fontsize',20,... 'foregroundcolor',[1 1 1],... 'backgroundcolor',[0 0 0],... 'position',[280 100 50 20],... 'callback','set(k,''marker'',''x'')'); 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]); 数学算法(3) 1)动态规划算法 plot(100+t+15*cos(3.05*t),t=0..200,coords=polar,axes=none,scaling=constrained); 2)分治算法 function Binary_Search(L,a,b,x); begin if a>b then return(-1) else begin m:=(a+b) div 2; if x=L[m] then return(m) else if x>L[m] then return(Binary_Search(L,m+1,b,x)); else return(Binary_Search(L,a,m-1,x)); end; end; 4)数据处理 function readprocess(file) fid=fopen(file,'rt'); if(fid==-1) display('File not exist!'); return; end array=[]; while(~feof(fid)) str=fscanf(fid,'%s',1); if(length(str)>10) %d+00005.00;v+00002.72;e+00002.28;u-0007;m+0761;t+0295; col=sscanf(str,'d%f;v%f;e%f;u%f;m%d;t%d;'); array=[array col]; end end fclose(fid); dhead=array(1,:); head=array(2,:); 'r:',t,head,'b-'); 一个程序的M文件-----概率 function daoju_n=daoju_n(x,y)%输入的x为u的开始,y为u的结束,x>100 a=[1 1 1 2 2 2 4 6 9 11 11 13 9 6 8 4 4 6]; f=a*0.01;%概率 n0=[100 :50:900];n1=[100 n0];n2=[150:50:900];n3=[0 n2 0]; n=(n1+n3)/2;%刀具完成件数为Ni,取他们的间隔的平均 ii=0; for(u=x:50:y)%按步长搜索 for(k=1:18) if(u==n3(1,k)) for(i=1:k) c1(i)=n(i)*f(i);d(i)=f(i); end c=sum(c1);g=sum(d); h=1-g; for(j=i+1:18) e(j)=f(j); end end end au=(c+u*h)/g;%求au d=1/(1/au+1/11400);%求c nn=sqrt(2*10*d/200)%求各个u对应的n min=1000/u+10/nn+(nn+1)*200/(2*d)+3000/d%%每个u对应L的数值 end |
|