三维绘图即包含三个变量,通常分为两种:
1)一个独立变量t,两外两个变量x,y随t变化。比如曲线的参数方程描述
2)两个独立变量x,y,第三个变量z随x,y变化。比如z=x^2+y^2
三维绘图函数主要有plot3、mesh、surf、contour,此外还有一些辅助函数meshgrid、alpha等
1.plot3
plot3主要用于三维线绘图,和plot基本一样,区别就是plot3每个点由x,y,z决定,而plot每个点由x,y决定。
t=0:0.1:10;
x=cos(2*t);
y=sin(2*t);
plot3(x,y,t);
2.mesh、surf、contour
mesh、surf、contour分别用于三维曲面、网格和等高线绘
| 函数名 | 说明 |
| mesh(X,Y,Z) | 创建网格或线框绘图。X,Y,Z均为2维数据。 |
| surf(X,Y,Z) | 创建曲面绘图。X,Y,Z均为2维数据。 |
| contour(X,Y,Z) | 创建等高线绘图。X,Y,Z均为2维数据。 |
这里需要说下x,y,z。以z=x^2+y^2为例,如果x取-1,0,1三个数,y取-2,-1,0,1,2 五个数,z根据x,y取值计算。
对于上述三个作图函数,X,Y,Z为5*3矩阵数据,矩阵的行数由y的取值个数决定,矩阵的列数由x的取值个数决定。(此处的X,Y,Z不是上面曲线方程的x,y,z,是上面三个作图函数的输入)
X每一列相同,并且包含-1,0,1三个取值
-1 0 1
-1 0 1
-1 0 1
-1 0 1
-1 0 1
Y每一行相同,并且包含-2,-1,0,1,1五个取值
-2 -2 -2
-1 -1 -1
0 0 0
1 1 1
2 2 2
Z根据z=x^2+y^2,遍历x,y取值计算即可,同样为5*3矩阵
5 4 5
2 1 2
1 0 1
2 1 2
5 4 5
此时我们将X,Y,Z作为surf,mesh,contour输入作图。
代码如下:代码中我们使用了meshgrid函数,由x,y(向量)得到X,Y(二维矩阵),这个过程自己编程得到也是可以的,用循环或者矩阵赋值repmat都可以(注释掉了的部分)。
x=-1:1:1;
y=-2:1:2;
[X,Y]=meshgrid(x,y);
% X=repmat(x,length(y),1);
% Y=repmat(y',1,length(x));
Z=X.^2+Y.^2;
figure(1)
subplot(311)
surf(X,Y,Z);
title('网格绘图')
subplot(312)
mesh(X,Y,Z);
title('曲面绘图')
subplot(313)
contour(X,Y,Z);
title('等高线绘图')
结果如下

最后有一个alpha(value)函数用来调整透明度,value在0-1之间,value为0为全透明,为1完全不透明。
本文介绍了三维绘图的基本概念,包括参数方程和三个变量的变化,重点讲解了plot3、mesh、surf和contour函数的用法,以及如何通过x,y网格数据创建网格、曲面和等高线图。实例演示了如何使用MATLAB中的这些函数并调整透明度。
1226

被折叠的 条评论
为什么被折叠?



