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

时间:2010-05-17 09:48:07

标签: matlab 3d plot

我知道我可以通过以下方式在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 个答案:

答案 0 :(得分:9)

Appologies,经过一番狩猎,我设法回答了我自己的问题:

您可以使用trisurf功能:

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

如果您有密集数据,则需要shading interp(或其他值,请检查doc shading),这样就不会因网格而出现黑色斑点。

答案 1 :(得分:3)

通过使用DELAUNAYTRISURF生成并绘制三角曲面,您似乎找到了自己的答案。

作为替代方案,您还可以在非均匀间隔点上插入规则间隔的网格,以生成可以使用SURF命令绘制的曲面。我将讨论如何使用TriScatteredInterp classGRIDDATA中的my answer(或已弃用的函数this other question on SO)来完成此操作。