您的位置:首页 > 编程语言 > MATLAB

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

2017-08-31 14:44 489 查看
%这是我关于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')

%-----------
91d3
--------三维特殊图像----------------%

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');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息