如何在MATLAB中使用不规则间距数据制作冲浪图?

8

我知道可以通过以下方式在MATLAB中创建3D曲面图:

x = linspace(1,10,100);
y = linspace(10,20,100);

[X Y] = meshgrid(x,y);

Z = X * Y;

surf(X,Y,Z);

但是这需要所有生成高度图的节点对齐。我有一组数据,其中包含任意点(x,y)和高度(z)。是否有一种简单的方法可以绘制图形,在点之间以类似于surf的方式生成表面?

2个回答

10

抱歉,经过一番搜索,我设法回答了自己的问题:

您可以使用trisurf函数:

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

如果您的数据比较密集,您需要进行shading interp(或者其他值,查看doc shading)处理,以避免由于网格而产生黑色斑块。


2
实际上,避免黑色斑点的最佳方法是将属性edgeColor设置为none - Jonas

3

看起来你已经使用 DELAUNAYTRISURF 来生成和绘制了一个三角网格表面。

作为一种替代方案,您还可以将定期间隔的网格拟合到非均匀间隔的点上,以生成可以使用SURF命令绘制的表面。 我在SO上的另一个问题中的答案中讨论了如何使用TriScatteredInterp(或不推荐使用的函数GRIDDATA)来实现这一点。

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