MATLAB学习笔记14(三维图形的绘制)

Matlab学习笔记 Day14

注:仅供学习使用,部分内容来自学校课程课件或网络,理性探讨。

WARNING:建议在光源稳定、充足的条件下观看。注意不要长时间盯着某图片,尤其是‘多峰函数’的生成图。

1.基本三维曲线函数(用法参考plot)

plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)

2.简易绘制三维曲线(用法参考ezplot)

ezplot3(x,y,z,[a,b]):在区间a < t < b绘制由参数方程x = x (t),y = y (t) 和z = z (t) 确定的三维曲线。未指定区间时,默认在区间0 < t < 2π 绘制图形。

3.三维曲面的绘制

(1)meshgrid函数
[X,Y]=meshgrid(x,y):当x=y时,可以简化为[X,Y]=meshgrid(x),其中x和y为向量。
将矩形区域a<x<b, c<y<d 内的mxn个网格点(X(i,j),Y(i,j)对应到曲面上,就得到曲面上的mxn个点,第(i,j)个网格点的坐标为(X(i,j),Y(i,j), Z(I,j)), Z(i,j)=f(X(i,j),Y(i,j)),因此,曲面上对应的mxn个点的x,y坐标构成的矩阵分别是由以上函数生成的X,Y。
z坐标构成的矩阵Z 可以根据Z(i,j)=f(X(i,j),Y(i,j))利用点运算得到。

(2)绘制曲面的函数(surf和mesh,用法相同)
①mesh(X,Y,Z,C) , 其中,X,Y,Z 分别是由曲面上mxn个点的x坐标、y坐标和z坐标构成的mxn的矩阵,即: (X(i,j),Y(i,j),Z(i,j))是第(i,j)个网格点Pij的坐标, C(i,j)是Pij的颜色值。

②mesh(X,Y,Z)  
使用C=Z(颜色值正比于高度值)

③mesh(x,y,Z)或mesh(x,y,Z,C)  
此处 ,使用两个向量代替两个矩阵,要求:length(x)=n, length(y)=m ,且[m,n]=size(Z),第(i,j)个网格点Pij的坐标为(x(j),y(i),Z(i,j))

④mesh(Z) 和mesh(Z,C)使用x=1:n及y=1:m。
即mesh(Z)等价于mesh(1:n,1:m,Z), mesh(Z,C)等价于mesh(1:n,1:m,Z,C)

例题1.绘制函数z=x*exp(-x2-y2)在[-2,2]x[-3,3]内的图形。

x=-2:0.1:2;   
y=-3:0.1:3;  
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
mesh(X,Y,Z);

图形样式:
在这里插入图片描述

体会:用鼠标拖动图样,可以看到在不同视角下的函数图像,变换极为方便,非常适合观察曲面图形

4.其他几个函数

(1) 等高线函数
contour(X,Y,Z,N/V) 和 contour3(X,Y,Z,N/V):X,Y,Z的含义和mesh(X,Y,Z)中相同。N/V为可选输入参数,N为要绘制的等高线的条数。亦可选择输入参数V ,V为一数值数组,用于指定等高线的高度值。
P.S. coutourf用于绘制填充的等高线图。

(2)
meshc函数:在mesh基础上增加绘制等高线
meshz函数:在mesh基础上增加了边界面屏蔽

测试样例代码:

x = -4:0.1:4;
y = -4:0.1:4;
[X,Y]=meshgrid(x,y);
m=x';
Z=sqrt(m.^2+y.^2);
subplot(2,2,1);mesh(X,Y,Z);title('mesh');
subplot(2,2,2);meshc(X,Y,Z);title('meshc');
subplot(2,2,3);meshz(X,Y,Z);title('meshz');

图例:
在这里插入图片描述
5.几种特殊曲面
(1)[x,y,z]=sphere(n):该函数将产生(n + 1)×(n + 1)矩阵x、y、z,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。n为圆滑程度,默认为20。

(2)[x,y,z]=cylinder(R,n):R是一个向量,存放柱面各个等间隔高度上的半径;n表示在圆柱圆周上有n个间隔点,默认时表示有20个间隔点。
注意:cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥

(3)z=peaks(x,y):多峰函数
注意:生成的数值矩阵可以作为mesh、surf等函数的参数而绘制出多峰函数曲面图。另外,若在调用peaks函数时不带输出参数,则直接绘制出多峰函数曲面图。

[x,y]=meshgrid(-5:0.1:5);
peaks(x,y);

在这里插入图片描述

6.简易曲面绘制函数
(1)ezsurf(f, [xmin,xmax,ymin,ymax])
绘制函数z=f(x,y)在[xmin,xmax,ymin,ymax]范围内的三维曲面。默认范围为[-2pi,2pi]x[-2pi,2pi]

(2)ezsurf(x,y,z, [umin,umax,vmin,vmax])
绘制在[umin,umax,vmin,vmax]范围n内由参数方程x=x(u,v), y=y(u,v),z=z(u,v)确定的三维曲面。默认范围为[-2pi,2pi]x[-2pi,2pi]。

(3)除此之外还有ezmesh,ezsurfc, ezmeshc, ezcontour, ezcontourf等等,内容参考上文。

7.其他三维图形

上一次笔记中的二维图形均可以扩展为三维图形。
例如:bar3,bar3h,pie3,stem3,fill3等。
其中,fill3(x,y,z,c)使用x,y,z作为多边形定点,而c指定填充的颜色。

除此之外,还有瀑布图、三维曲面的等高线图。绘制瀑布图用waterfall函数,它的用法及图形效果与meshz函数相似,只是它的网格线是在x轴方向出现,具有瀑布效果。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。

样例代码:

subplot(1,2,1);
[X,Y,Z]=peaks(30);
waterfall(X,Y,Z)
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');
subplot(1,2,2);
contour3(X,Y,Z,12,'k');     %其中12代表高度的等级数
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');

图例:
在这里插入图片描述

体会:使用MATLAB绘制三维曲面时,一定注意在外部光源稳定、充足的条件下绘制,否则可能造成眼部不适。建议按照上一次笔记,采用较为柔和的colormap来绘图!!画peaks的时候差点中招,色差太强烈,眼要花了。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值