MATLAB的三维画图(以plot3,contour为主)

来源:互联网 发布:设计优化的意义 编辑:程序博客网 时间:2024/06/05 10:42

%这是我关于MATLAB 的入门初级画图方法的学习过程和笔记,希望能对大家有帮助。

%有错误或疑惑的地方欢迎指出

%引用部分已经指出,如果涉及侵权,和我联系确认后保证删除。

%2017年8月29日

%《MATLAB R2015a数值分析计算方法》 张德丰 清华大学出版社


%---------------------画3维图表-----------------------------%
theta=0:0.01*pi:2*pi;
x=sin(theta);
y=cos(theta);
z=cos(4*theta);
plot3(x,y,z,':m','LineWidth',2);
hold on
theta=0:0.02*pi:2*pi;
x=sin(theta);
y=cos(theta);
z=cos(4*theta);
plot3(x,y,z,'bd','MarkerSize',5,'LineWidth',2);
grid on
hold off;


pause;
%---------------三维网格图---------------%
clear all
[x,y]=meshgrid(-3:0.5:3);
z=2*x.^2-3*y.^2;
subplot(221);
plot3(x,y,z);
title('plot3');


subplot(222);
mesh(x,y,z);
title('mesh');


subplot(223)
meshc(x,y,z);
title('meshc');


subplot(224)
meshz(x,y,z);
title('meshz');
set(gcf,'color','w');                 %set 函数用于设定属性


pause;


%---------------------曲面图形-------------------------------%
clear all


[x,y]=meshgrid(-3:1/8:3);            %函数是产生平面区域内的网格坐标矩阵,即以xy建立平面
z=peaks(x,y);
subplot(221);
surf(z);
title('surf(z)绘图形式');


subplot(222);
surf(x,y,z);
title('surf(x,y,z)绘图形式');


subplot(223);
surfl(x,y,z);
title('surfl(x,y,z)绘图形式');


subplot(224);
surfc(x,y,z);
title('surfc(x,y,z)绘图形式');


pause;
%---------------------等值线 等高线--------------------------------%
clear all
subplot(121);z=peaks;                         %peaks 为自动的一个以Z为输出的函数表达式:
                                              %z =  3*(1-x).^2.*exp(-(x.^2)- (y+1).^2) …
                                              %   - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... 
                                              %   - 1/3*exp(-(x+1).^2 - y.^2) 
[c,h]=contour(interp2(z,4));                  %contour,为画平面等高线的函数,contour(x,y,z)或者contour(z)
text_handle=clabel(c,h);                      %clabel 标示等高线的数字 clabel(c,h); c和h是由contour得出的等高线矩阵和列向量
set(text_handle,'BlackgroundColor',[1 1 .6],'Edgecolor',[.6 .7 .5]);




[x,y]=meshgrid([-2:.25:2]);                         
z=x.*exp(-x.^2-y.^2);  
subplot(122);contour3(x,y,z,30);              %contour3(x,y,z,30),以x,y,z建立含30条等高线的三维等高图。    
surface(x,y,z,'EdgeColor',[.8 .8 .8],'FaceColor','none')
grid off
view(-15,25)
colormap cool

set(gcf,'color','w')


%-------------------三维特殊图像----------------%
clear all
t=0:pi/10:2*pi;
[x1,y1,z1]=cylinder(2+cos(t));       %以x为轴旋转出圆柱体,[x,y,z]=cylinder(r,n) 函数一个半径为r、高度为1的圆柱体的x,y,z轴的坐标值,圆柱体沿其周长有n个等距分布的点;
subplot(2,3,1);surf(x1,y1,z1);
colormap gray
axis square ;                        %当前坐标系图形设置为方形
title('三维柱面图');


subplot(2,3,2); sphere;
axis square;
title('三维球体');


x1=[1 3 0.5 2.5 2];
explode=[0 1 0 0 0];
subplot(233);pie3(x1,explode);        % pie3 是画出立体饼状图,pie 是画出平面饼状图
title('三维饼图');
axis equal;                           %将横轴纵轴的定标系数设成相同值 ,即单位长度相同


x2=[0 1 1 2;1 1 2 2;0 0 1 1];
y2=[1 1 1 1;1 0 1 0;0 0 0 0];
z2=[1 1 1 1;1 0 1 0;0 0 0 0];
c=[0.5000 1.0000 1.0000 0.5000;
   1.0000 0.5000 0.5000 0.1667;
   0.3330 0.3330 0.5000 0.5000];
subplot(234);
fill3(x2,y2,z2,c);
colormap jet
title('三维填充图'); 
axis equal;


[x2,y2]=meshgrid(-3:.5:3,-3:.1:3);
z2=peaks(x2,y2);
subplot(235); ribbon(y2,z2);
colormap hsv
title('三维彩带图');
axis equal;


[x3,y3]=meshgrid(-2:0.25:2,-1:0.2:1);
z3=x3.*exp(-x3.^2-y3.^2);
[u,v,w]=surfnorm(x3,y3,z3);
subplot(236);quiver3(x3,y3,z3,u,v,w,0.5);
hold on
surf(x3,y3,z3);
colormap hsv
view(-35,45);
title('三维向量图');axis equal;
set(gcf,'color','w');

原创粉丝点击