高级会员
注册日期: 2007-04-05
帖子: 199
声望力: 28
|
matlab实用程序百例(27-36)
实例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
|