天天看点

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

前面两期我们介绍了plot函数的绘图作用,这一期我们继续学习三维曲面的Matlab绘制函数。

以马鞍面为例,其方程为:

z = x²/a²-y²/b²

在命令行窗口输入:

>> x=-2:0.1:2;

>> y=-2:0.1:2;

意为从-2到2每隔0.1记录一个数,生成一个数组,0.1是步长。记得后面加“;”,不即时输出结果。

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

meshgrid的作用是生成一个网格矩阵,从工作区的变量属性可以看出,X和Y都是41×41的矩阵。

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

为什么要生成矩阵呢?因为对于曲面方程z = x²/a²-y²/b²而言,每一个x都会对应一列y值,同时每一个y也会对应一列x值。那么,z坐标方向的值的数量应该是x和y两个数组维数的乘积,所以是41×41。

>> Z=X.^2/3-Y.^2/3;

注意这里不是X^2,而是X.^2,因为X是一个矩阵,所以有一点和没一点是有区别的。

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

X^2是矩阵之间的乘法(X必须是方阵),X.^2则是矩阵中每个元素做平方运算。

接下来就可以用surf函数绘制曲面了,输入:

>> surf(X,Y,Z);

>> axis equal;

>> view(-30,20);

得到结果如下

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

曲面上的网格映射到XY平面就是[X,Y],也就是meshgrid函数生成的矩阵;view的作用则是调整图片的观察视角。(如果x和y数组的步长越小,生成的网格就会越密。曲面看上去就会一片黑,放大后才能看清网格)

继续输入:

>> shading interp

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

(除去网格)

>> colorbar

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

(添加颜色标尺)

曲面的配色可以用colormap调节,最常见的是colormap('jet'),输入后结果如下:

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

如果不熟悉MATLAB中的函数用法,可以用help函数(一个很有用的函数)查询,如:

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

可以看到colormap内置的配色方式有很多种:

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

比如colormap('copper'),结果如下:

matlab绘制单位球的三维网格图,【MATLAB系列03】三维曲面的网格矩阵绘制

今天就讲这么多,在后面的学习过程中,我们还会经常用到矩阵的思维。不要害怕矩阵这两个字,数学不好也不用担心。小编负责搞定数学,你们只需要熟悉语言就行了。

像这一期提到的函数,meshgrid、surf、colormap等,关看字面意思就能猜个八九不离十,需要记的只是函数后面用到哪些参数。

现在,Matlab的面纱才刚揭开一角而已,更多有意思的功能还在等我们去发掘。