数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
楼主: 宝宝

【编程学习】matlab实用程序百例

  [复制链接]
 楼主| 发表于 2004-6-1 17:52:25 | 显示全部楼层
<><FONT size=1><b><EM>实例27:设置照明方式</EM></b></FONT></P><>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')</P><>subplot(2,2,2)
sphere
shading flat
camlight left
camlight right
lighting gouraud
colorbar
axis off
title('Figure2')</P><P>subplot(2,2,3)
sphere
shading interp
camlight right
camlight left
lighting phong
colorbar
axis off
title('Figure3')</P><P>subplot(2,2,4)
sphere
shading flat
camlight left
camlight right
lighting none
colorbar
axis off
title('Figure4')</P>
 楼主| 发表于 2004-6-1 17:53:28 | 显示全部楼层
<><FONT size=1><b><EM>实例28:羽状图</EM></b></FONT></P><>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])</P><>subplot(2,1,2)
t=0:0.5:10;
x=0.05+i;
y=exp(-x*t);
feather(y)
title('复数矩阵的羽状图')</P>
 楼主| 发表于 2004-6-1 17:53:59 | 显示全部楼层
<><FONT size=1><b><EM>实例29:立体透视(1)</EM></b></FONT></P><>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</P>
 楼主| 发表于 2004-6-1 17:54:47 | 显示全部楼层
<><FONT size=1><b><EM>实例30:立体透视(2)</EM></b></FONT></P><>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</P>
 楼主| 发表于 2004-6-1 17:55:20 | 显示全部楼层
<><FONT size=1><b><EM>实例31:表面图形</EM></b></FONT></P><>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)</P><>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</P>
 楼主| 发表于 2004-6-1 17:56:55 | 显示全部楼层
<><FONT size=1><b><EM>实例32:沿曲线移动的小球</EM></b></FONT></P><>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&gt;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]);</P>
 楼主| 发表于 2004-6-1 17:58:37 | 显示全部楼层
<><FONT size=1><b><EM>实例33:曲线转换按钮</EM></b></FONT></P><>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</P>
 楼主| 发表于 2004-6-1 17:59:30 | 显示全部楼层
<><FONT size=1><b><EM>实例34:栅格控制按钮</EM></b></FONT></P><>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);</P><>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('开关按钮的使用')</P>
 楼主| 发表于 2004-6-1 18:00:39 | 显示全部楼层
<><FONT size=1><b><EM>实例35:编辑框的使用</EM></b></FONT></P><>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);</P>
 楼主| 发表于 2004-6-1 18:01:34 | 显示全部楼层
<><FONT size=1><b><EM>实例36:弹出式菜单</EM></b></FONT></P><>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</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-12-2 13:56 , Processed in 0.052514 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表