温州喜来登酒店地址:Floyd最短路算法的MATLAB程序
来源:百度文库 编辑:偶看新闻 时间:2024/04/27 18:39:37
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,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