本文含有多图,请注意流量消耗!

# 三维曲线

# plot3 函数 和 fplot3 函数

用法与 plotfplot 类似,只是多了一个参数表示 z 轴 上的值

参见:

  • plot3
  • fplot3

e.g.e.g.

  1. 使用 plot3 函数绘制空间的螺旋线,参数方程如下:

{x=sint+tcosty=costtsintz=t \left\{ \begin{aligned} &x=sin{t}+tcos{t}\\ &y=cos{t}-tsin{t}\\ &z=t \end{aligned} \right.

t=linspace(0,10*pi,2000);
x=sin(t)+t.*cos(t);
y=cos(t)-t.*sin(t);
z=t;
plot3(x,y,z);

运行结果:

  1. 使用 fplot3 函数绘制墨西哥帽顶曲线,其参数方程为:

{x=et/10sin5ty=et/10cos5tz=tt[12,12] \left\{ \begin{aligned} &x=e^{-t/10}sin{5t}\\ &y=e^{-t/10}cos{5t}\\ &z=t\\ & t \in [-12,12] \end{aligned} \right.

x=@(t)exp(-t/10).*sin(5.*t);
y=@(t)exp(-t/10).*cos(5.*t);
z=@(t)t;
fplot3(x,y,z,[-12,12]);

运行结果:

# 三维曲面

# 平面网格数据的生成:就是要生成二维平面作为xOyxOy 面。

  1. 利用矩阵生成
  2. 利用 meshgrid 函数生成

在笔记 7 介绍过: 传送门

[X,Y]=meshgrid(x,y);

参数 X,Y 为向量,存储网格点 X、Y 的矩阵。

一个使用矩阵运算生成平面网格数据的例子:

x=[2:6];
y=[3:8]';
X=ones(size(y))*x;
Y=y*ones(size(x));

运行结果:

X =

     2     3     4     5     6
     2     3     4     5     6
     2     3     4     5     6
     2     3     4     5     6
     2     3     4     5     6
     2     3     4     5     6


Y =

     3     3     3     3     3
     4     4     4     4     4
     5     5     5     5     5
     6     6     6     6     6
     7     7     7     7     7
     8     8     8     8     8

一个使用 meshgrid 函数 生成平面网格数据的例子:

x=[2:6];
y=[3:8]';
[X,Y]=meshgrid(x,y);

运行结果:

X=
     2     3     4     5     6
     2     3     4     5     6
     2     3     4     5     6
     2     3     4     5     6
     2     3     4     5     6
     2     3     4     5     6

Y=
     3     3     3     3     3
     4     4     4     4     4
     5     5     5     5     5
     6     6     6     6     6
     7     7     7     7     7
     8     8     8     8     8

# 绘制三维曲面的函数

  • mesh 函数:网格曲面图
mesh(x,y,z,c);
  • surf 函数:曲面图
surf(x,y,z,c);

其中 x , y 是网格坐标矩阵, z 是网格点的高度矩阵, c 用于指定在不同高度下的曲面颜色, c 省略时,颜色设定正比于图形的高度。

e.g.e.g.

分别绘制三维曲线图和三维曲面图z=xe(x2+y2)z=xe^{-(x^2+y^2)}

三维曲线图:

x=[-1:0.2:2];
y=[-1:0.2:2];
[X,Y]=meshgrid(x,y);
z=X.*exp(-X.^2-Y.^2);
plot3(X,Y,z);

运行结果:

使用 mesh 函数绘制三维曲面图:

x=[-1:0.2:2];
y=[-1:0.2:2];
[X,Y]=meshgrid(x,y);
z=X.*exp(-X.^2-Y.^2);
mesh(X,Y,z);

运行结果:

使用 surf 函数绘制三维曲面图:

x=[-1:0.2:2];
y=[-1:0.2:2];
[X,Y]=meshgrid(x,y);
z=X.*exp(-X.^2-Y.^2);
surf(X,Y,z);

运行结果:

可以看到两个函数绘制的图像在外观上有所区别,依据实际情况使用。

有关这两个函数的说明文档,参见:

  • mesh

  • surf

更新于 阅读次数