如何在Matlab中从数据文件绘制3D曲面

6
我有一个包含三列数据x,y,z的数据文件,并且我想要进行3D绘图以可视化这个表面。
我可以使用meshgrid函数,但问题在于我只有那些y<=x的数据。有没有办法可以解决呢?
以下是一个例子:
x    y    z
============
1    1    0.5
2    1    0.3
2    2    1.2
3    1    1.1
3    2    8.0
3    3    1.4
============
3个回答

7
在很多情况下,一个简单的解决方案是使用trisurf。例如...
x = [1, 2, 2, 3, 3, 3];
y = [1, 1, 2, 1, 2, 3];
z = [0.5, 0.3, 1.2, 1.1, 1.8, 1.4];

tri = delaunay(x,y);
trisurf(tri,x,y,z)

alt text


请注意:我假设那些数字中的8是一个打字错误,所以我换成了1.8。此外,如果(x,y)平面上的数据不代表凸区域,则Delaunay仍将强制其成为凸形。这可能会在边缘周围引入插值伪影。 - user85109

5
你可以使用一个小脚本,通过两个嵌套循环填充缺失的值,其中一个循环用于x,另一个用于y
否则,请再次查看MATLAB文档中的函数meshgrid。在那里,你会看到See Also部分。不是偶然的,那里列出了一个名为griddata的函数。这就是你需要的!我还可以推荐更好的gridfit函数。

0
你可以通过已有的点拟合出一个曲面,然后绘制出这个曲面。我喜欢使用x2fx函数生成一个完整的二次模型,然后使用\运算符将数据拟合到模型上。你对你要绘制的曲面的基本特性有什么想法吗?你的数据是否有很多噪声?那个8.0看起来有些不合适,是异常值还是正确的数据?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接