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) %曲面图
8.相关文章
Matlab答疑五:使用微分定义求解微分方程的数值解https://blog.csdn.net/freexyn/article/details/127599351Matlab答疑:一个关于符号表达式写法的简单问题https://blog.csdn.net/freexyn/article/details/1273774619.相关视频
31.16 Matlab曲面图汇总:曲面图、网格图、函数曲面图
End