利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。
参考书目:《MATLAB基础教程 (第三版) (薛山)》
之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小技巧。
在本章中的代码,会以资源的形式发在我的博客里供大家免费下载学习。
三维图的绘制
plot3 | 三维曲线图 |
mesh和surf | 三维曲面图 |
1 plot3
在MATLAB中,plot3函数用于实现三维曲线的绘制,该函数的 官方调用格式为:
例:绘制三维螺旋线
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
grid on
axis square
2 mesh函数和surf函数
plot3函数只能够绘制三维曲线,但是不能用于绘制曲面。mesh命令可以绘制出在某一区间内完整的网格曲面,surf函数可以绘制三维曲面图。这两个函数的调用格式基本相同,下面以mesh函数为例,以下是关于mesh函数的官方调用格式说明:
例:
X = -1:0.1:1;
Y = X';
X1 = X.^2;
Y1 = Y.^2;
x = ones(3,1);
x = ones(length(X),1);
y = ones(1,length(Y));
X1 = x*X1;
Y1 = Y1*y;
Z = X1+Y1;
subplot(1,2,1),mesh(X,Y,Z);
subplot(1,2,2),surf(X,Y,Z);
在绘制三维曲面的时候,使用meshgrid函数经常能够得到很多的便利,该函数用于生成X,Y数组。
用法:
(1)[X,Y] = meshgrid(x,y),将x和y指定的区域转换成数组X,Y,X中的行为x的副本,Y中的列为y的副本。
(2)[X,Y] = meshgrid(x),相当于[X,Y] = meshgrid(x,x)
(3)[X,Y,Z] = meshgrid(x,y,z),用于三维数组
通过meshgrid函数,上面的代码就可以简化成:
[X,Y] = meshgrid([-1:0.1:1]);
Z = X.^2+Y.^2;
subplot(1,2,1),mesh(X,Y,Z);
subplot(1,2,2),surf(X,Y,Z);
还有一些用于绘制三维曲面的函数:
函数 | 功能 |
mesh | 绘制三维网格图 |
surf | 绘制三维表面图 |
meshc | 绘制带有等值线的三维网格图 |
meshz | 在图形周围绘制相关直线 |
trimesh | 绘制三角形网格图 |
surfc | 绘制带有等值线的三维表面图 |
trisurf | 绘制三角形表面图 |