本文含有多图,请注意流量消耗!
# 三维曲线
# plot3
函数 和 fplot3
函数
用法与 plot
和 fplot
类似,只是多了一个参数表示 z 轴
上的值
参见:
- plot3
- fplot3
- 使用
plot3
函数绘制空间的螺旋线,参数方程如下:
t=linspace(0,10*pi,2000); | |
x=sin(t)+t.*cos(t); | |
y=cos(t)-t.*sin(t); | |
z=t; | |
plot3(x,y,z); |
运行结果:
- 使用
fplot3
函数绘制墨西哥帽顶曲线,其参数方程为:
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]); |
运行结果:
# 三维曲面
# 平面网格数据的生成:就是要生成二维平面作为 面。
- 利用矩阵生成
- 利用
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
省略时,颜色设定正比于图形的高度。
分别绘制三维曲线图和三维曲面图
三维曲线图:
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