matlab应用程序100例
1-32是:图形应用篇
33-66是:界面设计篇
67-84是:图形处理篇
85-100是:数值分析篇
---------------------------------------------------------------
实例1:三角函数曲线(1)
function shili01
h0=figure('toolbar','none',...
'position',,...
'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',,...
'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',,...
'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',,...
'name','实例04');
x=0:900;a=1000;b=0.005;
y1=2*x;
y2=cos(b*x);
=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',,...
'name','实例05');
t=0:pi/10:2*pi;
=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()
subplot(2,2,3)
h=sin(x)+cos(y);
plot(t,h)
axis()
subplot(2,2,4)
g=(sin(x).^2)-(cos(y).^2);
plot(t,g)
axis()
实例6:图形标注
function shili06
h0=figure('toolbar','none',...
'position',,...
'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),...
,...
'fontsize',16)
text(x(imax),y(imax),...
,...
'fontsize',16)
实例7:条形图形
function shili07
h0=figure('toolbar','none',...
'position',,...
'name','实例07');
tiao1=;
tiao2=;
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',,...
'name','实例08');
x=91:95;
profits1=;
profits2=;
profits3=;
profits4=;
area(x,profits1,'facecolor',,...
'edgecolor','b',...
'linewidth',3)
hold on
area(x,profits2,'facecolor',,...
'edgecolor','y',...
'linewidth',3)
hold on
area(x,profits3,'facecolor',,...
'edgecolor','r',...
'linewidth',3)
hold on
area(x,profits4,'facecolor',,...
'edgecolor','m',...
'linewidth',3)
hold off
set(gca,'xtick',)
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',,...
'name','实例09');
t=
;
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,))
实例10:阶梯图
function shili10
h0=figure('toolbar','none',...
'position',,...
'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()
实例11:枝干图
function shili11
h0=figure('toolbar','none',...
'position',,...
'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=;
legend(h3,'y1+y2','y1=sin(x)','y2=cos(x)')
xlabel('自变量X');
ylabel('函数值Y');
title('正弦函数与余弦函数的线性组合');
实例12:罗盘图
function shili12
h0=figure('toolbar','none',...
'position',,...
'name','实例12');
winddirection=
;
windpower=
;
rdirection=winddirection*pi/180;
=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',,...
'name','实例13');
=meshgrid((0:10:360)*pi/180,0:0.05:1);
=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(,);
delete(h)
hold on
contour(x,y,abs(f),20)
实例14:交互式图形
function shili14
h0=figure('toolbar','none',...
'position',,...
'name','实例14');
axis();
hold on
x=;
y=;
n=0;
disp('单击鼠标左键点取需要的点');
disp('单击鼠标右键点取最后一个点');
but=1;
while but==1
=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',,...
'name','实例14');
axis();
hold on
x=;
y=;
n=0;
disp('单击鼠标左键点取需要的点');
disp('单击鼠标右键点取最后一个点');
but=1;
while but==1
=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',,...
'name','实例15');
axis equal
m=moviein(20,gcf);
set(gca,'nextplot','replacechildren')
h=uicontrol('style','slider','position',...
,'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',);
movie(m,30)
实例16:劳伦兹非线形方程的无序活动
function shili15
h0=figure('toolbar','none',...
'position',,...
'name','实例15');
axis equal
m=moviein(20,gcf);
set(gca,'nextplot','replacechildren')
h=uicontrol('style','slider','position',...
,'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',);
movie(m,30)
实例17:填充图
function shili17
h0=figure('toolbar','none',...
'position',,...
'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',,...
'fontsize',50,...
'horizontalalignment','center')
例18:条形图和阶梯形图
function shili18
h0=figure('toolbar','none',...
'position',,...
'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',,...
'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',,...
'name','实例20');
subplot(1,2,1)
=sphere(10);
mesh(x,y,z)
axis off
title('Figure1:Opaque')
hidden on
subplot(1,2,2)
=sphere(10);
mesh(x,y,z)
axis off
title('Figure2:Transparent')
hidden off
实例21PEAKS函数曲线
function shili21
h0=figure('toolbar','none',...
'position',,...
'name','实例21');
=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',,...
'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',,...
'name','实例23');
x=-5:0.5:5;
=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',,...
'name','实例24');
subplot(2,2,1)
z=peaks;
ribbon(z)
title('Figure1')
subplot(2,2,2)
=peaks(15);
=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)
=peaks(15);
=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',,...
'name','实例25');
vert=
;
fac=
;
grid off
sphere(36)
h=findobj('type','surface');
set(h,'facelighting','phong',...
'facecolor',...
'interp',...
'edgecolor',,...
'backfacelighting',...
'lit')
hold on
patch('faces',fac,'vertices',vert,...
'facecolor','y');
light('position',);
light('position',);
material shiny
axis vis3d off
hold off
实例26:柱状图
function shili26
h0=figure('toolbar','none',...
'position',,...
'name','实例26');
subplot(2,1,1)
x=
;
bar(x)
xlabel('X轴');
ylabel('Y轴');
title('第一子图');
subplot(2,1,2)
y=
;
barh(y)
xlabel('X轴');
ylabel('Y轴');
title('第二子图');
实例27:设置照明方式
function shili27
h0=figure('toolbar','none',...
'position',,...
'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',,...
'name','实例28');
subplot(2,1,1)
alpha=90:-10:0;
r=ones(size(alpha));
m=alpha*pi/180;
n=r*10;
=pol2cart(m,n);
feather(u,v)
title('羽状图')
axis()
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',,...
'name','实例29');
=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,,30)
dx=get(h1,'xdata');
dy=get(h1,'ydata');
dz=get(h1,'zdata');
delete(h1)
slice(x,y,z,v,,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',,...
'name','实例30');
=meshgrid(-2:0.1:2,...
-2:0.1:2,...
-2:0.1:2);
v=x.*exp(-x.^2-y.^2-z.^2);
=cylinder;
slice(x,y,z,v,,2,-2)
for i=-2:0.2:2
h=surface(dx+i,dy,dz);
rotate(h,,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()
view(-10,35)
drawnow
delete(hs)
hold off
end
实例31:表面图形
function shili31
h0=figure('toolbar','none',...
'position',,...
'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);
=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()
C=hadamard(2^k);
surf(X,Y,Z,C)
axis square
实例32:沿曲线移动的小球
h0=figure('toolbar','none',...
'position',,...
'name','实例32');
h1=axes('parent',h0,...
'position',,...
'visible','on');
t=0:pi/24:4*pi;
y=sin(t);
plot(t,y,'b')
n=length(t);
h=line('color',,...
'linestyle','.',...
'markersize',25,...
'erasemode','xor');
k1=uicontrol('parent',h0,...
'style','pushbutton',...
'position',,...
'string','开始',...
'callback',
);
k2=uicontrol('parent',h0,...
'style','pushbutton',...
'position',,...
'string','停止',...
'callback',
);
k3=uicontrol('parent',h0,...
'style','pushbutton',...
'position',,...
'string','关闭',...
'callback','close');
e1=uicontrol('parent',h0,...
'style','edit',...
'position',);
t1=uicontrol('parent',h0,...
'style','text',...
'string','循环次数',...
'position',);
e2=uicontrol('parent',h0,...
'style','edit',...
'position',);
t2=uicontrol('parent',h0,...
'style','text',...
'string','终点的X坐标值',...
'position',);
e3=uicontrol('parent',h0,...
'style','edit',...
'position',);
t3=uicontrol('parent',h0,...
'style','text',...
'string','终点的Y坐标值',...
'position',);
实例33:曲线转换按钮
h0=figure('toolbar','none',...
'position',,...
'name','实例33');
x=0:0.5:2*pi;
y=sin(x);
h=plot(x,y);
grid on
huidiao=
;
hm=uicontrol(gcf,'style','pushbutton',...
'string','余弦函数',...
'callback',huidiao);
i=1;
set(hm,'position',);
set(gca,'position',)
title('按钮的使用')
hold on
实例34:栅格控制按钮
h0=figure('toolbar','none',...
'position',,...
'name','实例34');
x=0:0.5:2*pi;
y=sin(x);
plot(x,y)
huidiao1=
;
huidiao2=
;
h_toggle1=uicontrol(gcf,'style','togglebutton',...
'string','grid on',...
'value',0,...
'position',,...
'callback',huidiao1);
h_toggle2=uicontrol(gcf,'style','togglebutton',...
'string','grid off',...
'value',0,...
'position',,...
'callback',huidiao2);
set(gca,'position',)
title('开关按钮的使用')
实例35:编辑框的使用
h0=figure('toolbar','none',...
'position',,...
'name','实例35');
f='Please input the letter';
huidiao1=
;
huidiao2=
;
h1_edit=uicontrol(gcf,'style','edit',...
'position',,...
'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',,...
'background','w',...
'max',5,...
'min',1);
h1_button=uicontrol(gcf,'style','pushbutton',...
'string','小写变大写',...
'position',,...
'callback',huidiao1);
h2_button=uicontrol(gcf,'style','pushbutton',...
'string','大写变小写',...
'position',,...
'callback',huidiao2);
实例36:弹出式菜单
h0=figure('toolbar','none',...
'position',,...
'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',);
set(hm,'value',1)
huidiao=
;
set(hm,'callback',huidiao)
set(gca,'position',)
title('弹出式菜单的使用')
实例37:滑标的使用
h0=figure('toolbar','none',...
'position',,...
'name','实例37');
=meshgrid(-8:0.5:8);
r=sqrt(x.^2+y.^2)+eps;
z=sin(r)./r;
h0=mesh(x,y,z);
h1=axes('position',...
,...
'visible','off');
htext=uicontrol(gcf,...
'units','points',...
'position',,...
'string','brightness',...
'style','text');
hslider=uicontrol(gcf,...
'units','points',...
'position',,...
'min',-1,...
'max',1,...
'style','slider',...
'callback',...
'brighten(get(hslider,''value''))');
实例38:多选菜单
h0=figure('toolbar','none',...
'position',,...
'name','实例38');
=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',,...
'callback',
);
实例39:菜单控制的使用
h0=figure('toolbar','none',...
'position',,...
'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=
;
huidiao2=
;
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',,...
'name','实例40');
h1=uimenu(gcf,'label','函数');
h11=uimenu(h1,'label','轮廓图',...
'callback',
=peaks;,',...
'contour3(x,y,z,30)']);
h12=uimenu(h1,'label','高斯分布',...
'callback',
);
h13=uimenu(h1,'label','Sinc函数',...
'callback',
=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',...
);
hl2(2)=uimenu(h2,'label','spring',...
'callback',...
);
hl2(3)=uimenu(h2,'label','Summer',...
'callback',...
);
hl2(4)=uimenu(h2,'label','Autumn',...
'callback',...
);
hl2(5)=uimenu(h2,'label','Winter',...
'callback',...
);
h3=uimenu(gcf,'label','坐标选项');
h31=uimenu(h3,'label','Axis on',...
'callback',...
);
h32=uimenu(h3,'label','Axis off',...
'callback',...
);
实例41:除法计算器
h=figure('toolbar','none',...
'position',,...
'name','实例41');
h1=uicontrol(gcf,'style','edit',...
'position',,...
'HorizontalAlignment','right',...
'callback',
);
h2=uicontrol(gcf,'style','edit',...
'HorizontalAlignment','right',...
'position',,...
'callback',
);
h3=uicontrol(gcf,'style','text',...
'string','被除数',...
'position',);
h4=uicontrol(gcf,'style','edit',...
'position',);
h5=uicontrol(gcf,'style','pushbutton',...
'position',,...
'string','=',...
'callback',
);
h8=uicontrol(gcf,'style','text',...
'string','除数',...
'position',);
h9=uicontrol(gcf,'style','text',...
'string','商',...
'position',);
实例42:单选框的使用
h0=figure('toolbar','none',...
'position',,...
'name','实例42');
x=0:0.5:2*pi;
y=sin(x);
plot(x,y)
grid on
set(gcf,'toolbar','none')
g=set(gca,'position',);
huidiao1=
;
huidiao2=
;
box_on=uicontrol(gcf,'style','radio',...
'position',,...
'string','grid on',...
'value',1,...
'callback',huidiao1);
box_off=uicontrol(gcf,'style','radio',...
'position',,...
'string','grid off',...
'value',0,...
'callback',huidiao2);
title('无线按钮的使用')
实例43:添加环境效果
h0=figure('toolbar','none',...
'position',,...
'name','实例43');
h1=axes('parent',h0,...
'position',,...
'visible','off');
sphere
h=findobj('type','surface');
shading interp
axis equal
l=light('position',);
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',);
u11=uimenu('parent',u1,...
'label','gouraud',...
'tag','u11',...
'backgroundcolor',,...
'callback',
);
u12=uimenu('parent',u1,...
'label','phong',...
'tag','u12',...
'backgroundcolor',,...
'callback',
);
u2=uimenu('parent',h0,...
'label','背面灯光',...
'tag','u2',...
'backgroundcolor',);
u21=uimenu('parent',u2,...
'label','reverselit',...
'tag','u21',...
'checked','on',...
'backgroundcolor',,...
'callback',
);
u22=uimenu('parent',u2,...
'label','reverselit',...
'tag','u22',...
'backgroundcolor',,...
'callback',
);
s1=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s1',...
'min',0,...
'max',1,...
'value',k(1),...
'position',,...
'callback',
);
t1=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t1',...
'string','镜面反射强度',...
'position',);
s2=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s2',...
'min',0,...
'max',1,...
'value',k(2),...
'position',,...
'callback',
);
t2=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t2',...
'string','漫反射强度',...
'position',);
s3=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s3',...
'min',0.1,...
'max',1,...
'value',k(3)/20,...
'position',,...
'callback',
);
t3=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t3',...
'string','镜面指数',...
'position',);
s4=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s4',...
'min',0,...
'max',1,...
'value',k(4),...
'position',,...
'callback',
);
t4=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t1',...
'string','镜面颜色反射比',...
'position',);
b1=uicontrol('parent',h0,...
'units','points',...
'style','pushbutton',...
'tag','b1',...
'string','关闭',...
'position',,...
'callback','close');
实例44:改变坐标轴范围
h0=figure('toolbar','none',...
'position',,...
'name','实例44');
h1=axes('parent',h0,...
'position',,...
'visible','on');
e1=uicontrol('parent',h0,...
'style','edit',...
'string',1,...
'position',);
t1=uicontrol('parent',h0,...
'style','text',...
'string','X轴最小值',...
'position',);
e2=uicontrol('parent',h0,...
'style','edit',...
'string',5,...
'position',);
t2=uicontrol('parent',h0,...
'style','text',...
'string','X轴最大值',...
'position',);
e3=uicontrol('parent',h0,...
'style','edit',...
'string',1,...
'position',);
t3=uicontrol('parent',h0,...
'style','text',...
'string','Y轴最小值',...
'position',);
e4=uicontrol('parent',h0,...
'style','edit',...
'string',5,...
'position',);
t4=uicontrol('parent',h0,...
'style','text',...
'string','Y轴最大值',...
'position',);
e5=uicontrol('parent',h0,...
'style','edit',...
'string',20,...
'position',);
t5=uicontrol('parent',h0,...
'style','text',...
'horizontalalignment','left',...
'string','点数',...
'position',);
b1=uicontrol('parent',h0,...
'style','pushbutton',...
'string','绘图',...
'position',,...
'callback',
=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(,)))~=0,',...
'z1(k,j)=nan;,',...
'end,',...
'end,',...
'end,',...
'surf(x,y,z1),',...
'hold on,',...
'if u==1,',...
'z2=-z1;,',...
'surf(x,y,z2),',...
'axis();,',...
'end,',...
'xlabel(''x'');,',...
'ylabel(''y'');,',...
'zlabel(''z'');,',...
'hold off']);
b2=uicontrol('parent',h0,...
'style','pushbutton',...
'string','关闭',...
'position',,...
'callback','close');
实例45:简单运算器
h1=uicontrol(gcf,'style','radio',...
'string','加',...
'value',1,...
'position',,...
'callback',
);
h2=uicontrol(gcf,'style','radio',...
'string','减',...
'position',,...
'callback',
);
h3=uicontrol(gcf,'style','radio',...
'string','乘',...
'position',,...
'callback',
);
e1=uicontrol(gcf,'style','edit',...
'position',);
e2=uicontrol(gcf,'style','edit',...
'position',);
e3=uicontrol(gcf,'style','edit',...
'position',);
b1=uicontrol(gcf,'style','pushbutton',...
'string','运算',...
'position',,...
'callback',
);
b2=uicontrol(gcf,'style','pushbutton',...
'string','退出',...
'position',,...
'callback','close');
实例46:曲线色彩的修改
h0=figure('toolbar','none',...
'position',,...
'name','my second gui');
h1=axes('parent',h0,...
'position',,...
'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',,...
'callback','set(k,''color'',''r'')');
p2=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor','g',...
'position',,...
'callback','set(k,''color'',''g'')');
p3=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor','b',...
'position',,...
'callback','set(k,''color'',''b'')');
p4=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor',,...
'fontsize',20,...
'fontweight','demi',...
'string','关闭',...
'position',,...
'callback','close');
t1=uicontrol('parent',h0,...
'style','text',...
'string','红色',...
'fontsize',12,...
'fontweight','demi',...
'position',);
t2=uicontrol('parent',h0,...
'style','text',...
'string','绿色',...
'fontsize',12,...
'fontweight','demi',...
'position',);
t3=uicontrol('parent',h0,...
'style','text',...
'string','蓝色',...
'fontsize',12,...
'fontweight','demi',...
'position',);
[ Last edited by plp626 on 2008-5-15 at 08:31 AM ]
1-32是:图形应用篇
33-66是:界面设计篇
67-84是:图形处理篇
85-100是:数值分析篇
---------------------------------------------------------------
实例1:三角函数曲线(1)
function shili01
h0=figure('toolbar','none',...
'position',,...
'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',,...
'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',,...
'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',,...
'name','实例04');
x=0:900;a=1000;b=0.005;
y1=2*x;
y2=cos(b*x);
=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',,...
'name','实例05');
t=0:pi/10:2*pi;
=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()
subplot(2,2,3)
h=sin(x)+cos(y);
plot(t,h)
axis()
subplot(2,2,4)
g=(sin(x).^2)-(cos(y).^2);
plot(t,g)
axis()
实例6:图形标注
function shili06
h0=figure('toolbar','none',...
'position',,...
'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),...
,...
'fontsize',16)
text(x(imax),y(imax),...
,...
'fontsize',16)
实例7:条形图形
function shili07
h0=figure('toolbar','none',...
'position',,...
'name','实例07');
tiao1=;
tiao2=;
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',,...
'name','实例08');
x=91:95;
profits1=;
profits2=;
profits3=;
profits4=;
area(x,profits1,'facecolor',,...
'edgecolor','b',...
'linewidth',3)
hold on
area(x,profits2,'facecolor',,...
'edgecolor','y',...
'linewidth',3)
hold on
area(x,profits3,'facecolor',,...
'edgecolor','r',...
'linewidth',3)
hold on
area(x,profits4,'facecolor',,...
'edgecolor','m',...
'linewidth',3)
hold off
set(gca,'xtick',)
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',,...
'name','实例09');
t=
;
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,))
实例10:阶梯图
function shili10
h0=figure('toolbar','none',...
'position',,...
'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()
实例11:枝干图
function shili11
h0=figure('toolbar','none',...
'position',,...
'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=;
legend(h3,'y1+y2','y1=sin(x)','y2=cos(x)')
xlabel('自变量X');
ylabel('函数值Y');
title('正弦函数与余弦函数的线性组合');
实例12:罗盘图
function shili12
h0=figure('toolbar','none',...
'position',,...
'name','实例12');
winddirection=
;
windpower=
;
rdirection=winddirection*pi/180;
=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',,...
'name','实例13');
=meshgrid((0:10:360)*pi/180,0:0.05:1);
=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(,);
delete(h)
hold on
contour(x,y,abs(f),20)
实例14:交互式图形
function shili14
h0=figure('toolbar','none',...
'position',,...
'name','实例14');
axis();
hold on
x=;
y=;
n=0;
disp('单击鼠标左键点取需要的点');
disp('单击鼠标右键点取最后一个点');
but=1;
while but==1
=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',,...
'name','实例14');
axis();
hold on
x=;
y=;
n=0;
disp('单击鼠标左键点取需要的点');
disp('单击鼠标右键点取最后一个点');
but=1;
while but==1
=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',,...
'name','实例15');
axis equal
m=moviein(20,gcf);
set(gca,'nextplot','replacechildren')
h=uicontrol('style','slider','position',...
,'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',);
movie(m,30)
实例16:劳伦兹非线形方程的无序活动
function shili15
h0=figure('toolbar','none',...
'position',,...
'name','实例15');
axis equal
m=moviein(20,gcf);
set(gca,'nextplot','replacechildren')
h=uicontrol('style','slider','position',...
,'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',);
movie(m,30)
实例17:填充图
function shili17
h0=figure('toolbar','none',...
'position',,...
'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',,...
'fontsize',50,...
'horizontalalignment','center')
例18:条形图和阶梯形图
function shili18
h0=figure('toolbar','none',...
'position',,...
'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',,...
'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',,...
'name','实例20');
subplot(1,2,1)
=sphere(10);
mesh(x,y,z)
axis off
title('Figure1:Opaque')
hidden on
subplot(1,2,2)
=sphere(10);
mesh(x,y,z)
axis off
title('Figure2:Transparent')
hidden off
实例21PEAKS函数曲线
function shili21
h0=figure('toolbar','none',...
'position',,...
'name','实例21');
=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',,...
'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',,...
'name','实例23');
x=-5:0.5:5;
=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',,...
'name','实例24');
subplot(2,2,1)
z=peaks;
ribbon(z)
title('Figure1')
subplot(2,2,2)
=peaks(15);
=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)
=peaks(15);
=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',,...
'name','实例25');
vert=
;
fac=
;
grid off
sphere(36)
h=findobj('type','surface');
set(h,'facelighting','phong',...
'facecolor',...
'interp',...
'edgecolor',,...
'backfacelighting',...
'lit')
hold on
patch('faces',fac,'vertices',vert,...
'facecolor','y');
light('position',);
light('position',);
material shiny
axis vis3d off
hold off
实例26:柱状图
function shili26
h0=figure('toolbar','none',...
'position',,...
'name','实例26');
subplot(2,1,1)
x=
;
bar(x)
xlabel('X轴');
ylabel('Y轴');
title('第一子图');
subplot(2,1,2)
y=
;
barh(y)
xlabel('X轴');
ylabel('Y轴');
title('第二子图');
实例27:设置照明方式
function shili27
h0=figure('toolbar','none',...
'position',,...
'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',,...
'name','实例28');
subplot(2,1,1)
alpha=90:-10:0;
r=ones(size(alpha));
m=alpha*pi/180;
n=r*10;
=pol2cart(m,n);
feather(u,v)
title('羽状图')
axis()
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',,...
'name','实例29');
=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,,30)
dx=get(h1,'xdata');
dy=get(h1,'ydata');
dz=get(h1,'zdata');
delete(h1)
slice(x,y,z,v,,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',,...
'name','实例30');
=meshgrid(-2:0.1:2,...
-2:0.1:2,...
-2:0.1:2);
v=x.*exp(-x.^2-y.^2-z.^2);
=cylinder;
slice(x,y,z,v,,2,-2)
for i=-2:0.2:2
h=surface(dx+i,dy,dz);
rotate(h,,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()
view(-10,35)
drawnow
delete(hs)
hold off
end
实例31:表面图形
function shili31
h0=figure('toolbar','none',...
'position',,...
'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);
=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()
C=hadamard(2^k);
surf(X,Y,Z,C)
axis square
实例32:沿曲线移动的小球
h0=figure('toolbar','none',...
'position',,...
'name','实例32');
h1=axes('parent',h0,...
'position',,...
'visible','on');
t=0:pi/24:4*pi;
y=sin(t);
plot(t,y,'b')
n=length(t);
h=line('color',,...
'linestyle','.',...
'markersize',25,...
'erasemode','xor');
k1=uicontrol('parent',h0,...
'style','pushbutton',...
'position',,...
'string','开始',...
'callback',
);
k2=uicontrol('parent',h0,...
'style','pushbutton',...
'position',,...
'string','停止',...
'callback',
);
k3=uicontrol('parent',h0,...
'style','pushbutton',...
'position',,...
'string','关闭',...
'callback','close');
e1=uicontrol('parent',h0,...
'style','edit',...
'position',);
t1=uicontrol('parent',h0,...
'style','text',...
'string','循环次数',...
'position',);
e2=uicontrol('parent',h0,...
'style','edit',...
'position',);
t2=uicontrol('parent',h0,...
'style','text',...
'string','终点的X坐标值',...
'position',);
e3=uicontrol('parent',h0,...
'style','edit',...
'position',);
t3=uicontrol('parent',h0,...
'style','text',...
'string','终点的Y坐标值',...
'position',);
实例33:曲线转换按钮
h0=figure('toolbar','none',...
'position',,...
'name','实例33');
x=0:0.5:2*pi;
y=sin(x);
h=plot(x,y);
grid on
huidiao=
;
hm=uicontrol(gcf,'style','pushbutton',...
'string','余弦函数',...
'callback',huidiao);
i=1;
set(hm,'position',);
set(gca,'position',)
title('按钮的使用')
hold on
实例34:栅格控制按钮
h0=figure('toolbar','none',...
'position',,...
'name','实例34');
x=0:0.5:2*pi;
y=sin(x);
plot(x,y)
huidiao1=
;
huidiao2=
;
h_toggle1=uicontrol(gcf,'style','togglebutton',...
'string','grid on',...
'value',0,...
'position',,...
'callback',huidiao1);
h_toggle2=uicontrol(gcf,'style','togglebutton',...
'string','grid off',...
'value',0,...
'position',,...
'callback',huidiao2);
set(gca,'position',)
title('开关按钮的使用')
实例35:编辑框的使用
h0=figure('toolbar','none',...
'position',,...
'name','实例35');
f='Please input the letter';
huidiao1=
;
huidiao2=
;
h1_edit=uicontrol(gcf,'style','edit',...
'position',,...
'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',,...
'background','w',...
'max',5,...
'min',1);
h1_button=uicontrol(gcf,'style','pushbutton',...
'string','小写变大写',...
'position',,...
'callback',huidiao1);
h2_button=uicontrol(gcf,'style','pushbutton',...
'string','大写变小写',...
'position',,...
'callback',huidiao2);
实例36:弹出式菜单
h0=figure('toolbar','none',...
'position',,...
'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',);
set(hm,'value',1)
huidiao=
;
set(hm,'callback',huidiao)
set(gca,'position',)
title('弹出式菜单的使用')
实例37:滑标的使用
h0=figure('toolbar','none',...
'position',,...
'name','实例37');
=meshgrid(-8:0.5:8);
r=sqrt(x.^2+y.^2)+eps;
z=sin(r)./r;
h0=mesh(x,y,z);
h1=axes('position',...
,...
'visible','off');
htext=uicontrol(gcf,...
'units','points',...
'position',,...
'string','brightness',...
'style','text');
hslider=uicontrol(gcf,...
'units','points',...
'position',,...
'min',-1,...
'max',1,...
'style','slider',...
'callback',...
'brighten(get(hslider,''value''))');
实例38:多选菜单
h0=figure('toolbar','none',...
'position',,...
'name','实例38');
=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',,...
'callback',
);
实例39:菜单控制的使用
h0=figure('toolbar','none',...
'position',,...
'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=
;
huidiao2=
;
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',,...
'name','实例40');
h1=uimenu(gcf,'label','函数');
h11=uimenu(h1,'label','轮廓图',...
'callback',
=peaks;,',...
'contour3(x,y,z,30)']);
h12=uimenu(h1,'label','高斯分布',...
'callback',
);
h13=uimenu(h1,'label','Sinc函数',...
'callback',
=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',...
);
hl2(2)=uimenu(h2,'label','spring',...
'callback',...
);
hl2(3)=uimenu(h2,'label','Summer',...
'callback',...
);
hl2(4)=uimenu(h2,'label','Autumn',...
'callback',...
);
hl2(5)=uimenu(h2,'label','Winter',...
'callback',...
);
h3=uimenu(gcf,'label','坐标选项');
h31=uimenu(h3,'label','Axis on',...
'callback',...
);
h32=uimenu(h3,'label','Axis off',...
'callback',...
);
实例41:除法计算器
h=figure('toolbar','none',...
'position',,...
'name','实例41');
h1=uicontrol(gcf,'style','edit',...
'position',,...
'HorizontalAlignment','right',...
'callback',
);
h2=uicontrol(gcf,'style','edit',...
'HorizontalAlignment','right',...
'position',,...
'callback',
);
h3=uicontrol(gcf,'style','text',...
'string','被除数',...
'position',);
h4=uicontrol(gcf,'style','edit',...
'position',);
h5=uicontrol(gcf,'style','pushbutton',...
'position',,...
'string','=',...
'callback',
);
h8=uicontrol(gcf,'style','text',...
'string','除数',...
'position',);
h9=uicontrol(gcf,'style','text',...
'string','商',...
'position',);
实例42:单选框的使用
h0=figure('toolbar','none',...
'position',,...
'name','实例42');
x=0:0.5:2*pi;
y=sin(x);
plot(x,y)
grid on
set(gcf,'toolbar','none')
g=set(gca,'position',);
huidiao1=
;
huidiao2=
;
box_on=uicontrol(gcf,'style','radio',...
'position',,...
'string','grid on',...
'value',1,...
'callback',huidiao1);
box_off=uicontrol(gcf,'style','radio',...
'position',,...
'string','grid off',...
'value',0,...
'callback',huidiao2);
title('无线按钮的使用')
实例43:添加环境效果
h0=figure('toolbar','none',...
'position',,...
'name','实例43');
h1=axes('parent',h0,...
'position',,...
'visible','off');
sphere
h=findobj('type','surface');
shading interp
axis equal
l=light('position',);
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',);
u11=uimenu('parent',u1,...
'label','gouraud',...
'tag','u11',...
'backgroundcolor',,...
'callback',
);
u12=uimenu('parent',u1,...
'label','phong',...
'tag','u12',...
'backgroundcolor',,...
'callback',
);
u2=uimenu('parent',h0,...
'label','背面灯光',...
'tag','u2',...
'backgroundcolor',);
u21=uimenu('parent',u2,...
'label','reverselit',...
'tag','u21',...
'checked','on',...
'backgroundcolor',,...
'callback',
);
u22=uimenu('parent',u2,...
'label','reverselit',...
'tag','u22',...
'backgroundcolor',,...
'callback',
);
s1=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s1',...
'min',0,...
'max',1,...
'value',k(1),...
'position',,...
'callback',
);
t1=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t1',...
'string','镜面反射强度',...
'position',);
s2=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s2',...
'min',0,...
'max',1,...
'value',k(2),...
'position',,...
'callback',
);
t2=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t2',...
'string','漫反射强度',...
'position',);
s3=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s3',...
'min',0.1,...
'max',1,...
'value',k(3)/20,...
'position',,...
'callback',
);
t3=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t3',...
'string','镜面指数',...
'position',);
s4=uicontrol('parent',h0,...
'units','points',...
'style','slider',...
'tag','s4',...
'min',0,...
'max',1,...
'value',k(4),...
'position',,...
'callback',
);
t4=uicontrol('parent',h0,...
'units','points',...
'style','text',...
'tag','t1',...
'string','镜面颜色反射比',...
'position',);
b1=uicontrol('parent',h0,...
'units','points',...
'style','pushbutton',...
'tag','b1',...
'string','关闭',...
'position',,...
'callback','close');
实例44:改变坐标轴范围
h0=figure('toolbar','none',...
'position',,...
'name','实例44');
h1=axes('parent',h0,...
'position',,...
'visible','on');
e1=uicontrol('parent',h0,...
'style','edit',...
'string',1,...
'position',);
t1=uicontrol('parent',h0,...
'style','text',...
'string','X轴最小值',...
'position',);
e2=uicontrol('parent',h0,...
'style','edit',...
'string',5,...
'position',);
t2=uicontrol('parent',h0,...
'style','text',...
'string','X轴最大值',...
'position',);
e3=uicontrol('parent',h0,...
'style','edit',...
'string',1,...
'position',);
t3=uicontrol('parent',h0,...
'style','text',...
'string','Y轴最小值',...
'position',);
e4=uicontrol('parent',h0,...
'style','edit',...
'string',5,...
'position',);
t4=uicontrol('parent',h0,...
'style','text',...
'string','Y轴最大值',...
'position',);
e5=uicontrol('parent',h0,...
'style','edit',...
'string',20,...
'position',);
t5=uicontrol('parent',h0,...
'style','text',...
'horizontalalignment','left',...
'string','点数',...
'position',);
b1=uicontrol('parent',h0,...
'style','pushbutton',...
'string','绘图',...
'position',,...
'callback',
=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(,)))~=0,',...
'z1(k,j)=nan;,',...
'end,',...
'end,',...
'end,',...
'surf(x,y,z1),',...
'hold on,',...
'if u==1,',...
'z2=-z1;,',...
'surf(x,y,z2),',...
'axis();,',...
'end,',...
'xlabel(''x'');,',...
'ylabel(''y'');,',...
'zlabel(''z'');,',...
'hold off']);
b2=uicontrol('parent',h0,...
'style','pushbutton',...
'string','关闭',...
'position',,...
'callback','close');
实例45:简单运算器
h1=uicontrol(gcf,'style','radio',...
'string','加',...
'value',1,...
'position',,...
'callback',
);
h2=uicontrol(gcf,'style','radio',...
'string','减',...
'position',,...
'callback',
);
h3=uicontrol(gcf,'style','radio',...
'string','乘',...
'position',,...
'callback',
);
e1=uicontrol(gcf,'style','edit',...
'position',);
e2=uicontrol(gcf,'style','edit',...
'position',);
e3=uicontrol(gcf,'style','edit',...
'position',);
b1=uicontrol(gcf,'style','pushbutton',...
'string','运算',...
'position',,...
'callback',
);
b2=uicontrol(gcf,'style','pushbutton',...
'string','退出',...
'position',,...
'callback','close');
实例46:曲线色彩的修改
h0=figure('toolbar','none',...
'position',,...
'name','my second gui');
h1=axes('parent',h0,...
'position',,...
'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',,...
'callback','set(k,''color'',''r'')');
p2=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor','g',...
'position',,...
'callback','set(k,''color'',''g'')');
p3=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor','b',...
'position',,...
'callback','set(k,''color'',''b'')');
p4=uicontrol('parent',h0,...
'style','pushbutton',...
'backgroundcolor',,...
'fontsize',20,...
'fontweight','demi',...
'string','关闭',...
'position',,...
'callback','close');
t1=uicontrol('parent',h0,...
'style','text',...
'string','红色',...
'fontsize',12,...
'fontweight','demi',...
'position',);
t2=uicontrol('parent',h0,...
'style','text',...
'string','绿色',...
'fontsize',12,...
'fontweight','demi',...
'position',);
t3=uicontrol('parent',h0,...
'style','text',...
'string','蓝色',...
'fontsize',12,...
'fontweight','demi',...
'position',);
[ Last edited by plp626 on 2008-5-15 at 08:31 AM ]
