0.很多同学学习Matlab绘图的时候,都会有这样的灵魂拷问:曲面图=三维图,有三个维度的坐标数据(x,y,z)就可以绘制曲面图了,不是吗,有什么错吗,就是这样做的呀,为什么程序会报错?
1.首先说,有三个维度的坐标数据(x,y,z),是不是就可以绘制曲面图了?不是的!解释很简单:还有曲线图;
2.防止大家懵掉,来,直观认识一下曲线图和曲面图的差别
曲线图
曲面图
3.看完上面的图,说非核心内容:曲线图,在Matlab里的绘图函数是plot3,用法是输入三个维度的坐标数据(x,y,z)即可;注意,这里的三维坐标数据的格式必须满足:每个变量(x、y、z)都是列向量;
4.再说,曲面图,那么,必然绕不开本文开头的灵魂拷问:绘制曲面图为什么要构建网格数据?解释很简单:三维数据可视化是曲线呀,构建网格之后,才形成曲面呀!若还不明白,想象一下,蜘蛛是怎么结网的;
5.在Matlab里,曲面图使用函数surf,用法是输入三个维度的坐标数据(x,y,z),与上面有所差别的是,这里的三维坐标数据的格式必须满足:每个变量(x、y、z)必须是矩阵,也就是建立好的网格数据点;
6.建立网格使用函数meshgrid函数,而且,自变量x和y一起建立网格数据,然后使用网格数据(x,y),计算因变量z,如此,再用surf绘图,就可大功告成了;
7.曲线图和曲面图的程序示例
x=-5:5;
y=-5:5;
z=x.^2+y.^2;
plot3(x,y,z) %曲线图
[x1,y1]=meshgrid(x,y);
z1=x1.^2+y1.^2;
surf(x1,y1,z1) %曲面图
相关推荐
End