说是高级绘图, 其实在无比强大的matlab中并不难.
1.3D曲线
3维的曲线绘制几乎和2维的plot一样简单,不同的是我们使用的是plot3函数:
>> time=0:0.001:4*pi;
>> x=sin(time);
>> y=cos(time);
>> z=time;
>> plot3(x,y,z,'k','LineWidth',2);
>> zlabel('Time');
出来的效果如图:
2.面的表示
与线相比,可能虚拟化的3D面要用得更多一些。内建的函数surf就是用来绘制由x,y,z坐标系下的点构成的平面。不过在构造三维面之前需要先得到一个[X,Y]矩阵,而不能直接用x,y向量。该矩阵可以由函数meshgrid(x,y)得到。例如:
>>x=-pi:0.1:pi;
>> y=-pi:0.1:pi;
>> [X,Y]=meshgrid(x,y);
>> %然后我们对XY阵的每个点求值
>> Z =sin(X).*cos(Y);
>> surf(X,Y,Z)
效果如图:
当然我们还可以对图形进行进一步的处理,比如用shading方法自定义一些着色方案。
>>shading flat
此时,每个小方格的有自己固定的颜色:
高洛德着色, 对3D模型各顶点的颜色进行平滑、融合处理:
3.轮廓线(等高线)
在上面的例子中,我们还可以使用contour函数可以绘制等高线
>> contour(X,Y,Z,'LineWidth',2)
如图:
为了看得更直观,不妨使用mesh函数将原图以网格面呈现在等高线图中:
>> hold on
>> mesh(X,Y,Z);