我知道我可以通过以下方式在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
类似的方式在点之间生成表面?
答案 0 :(得分:9)
Appologies,经过一番狩猎,我设法回答了我自己的问题:
您可以使用trisurf
功能:
tri = delaunay(x,y);
trisurf(tri,x,y,z);
如果您有密集数据,则需要shading interp
(或其他值,请检查doc shading
),这样就不会因网格而出现黑色斑点。
答案 1 :(得分:3)
通过使用DELAUNAY和TRISURF生成并绘制三角曲面,您似乎找到了自己的答案。
作为替代方案,您还可以在非均匀间隔点上插入规则间隔的网格,以生成可以使用SURF命令绘制的曲面。我将讨论如何使用TriScatteredInterp class到GRIDDATA中的my answer(或已弃用的函数this other question on SO)来完成此操作。