我知道可以通过以下方式在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的方式生成表面?
抱歉,经过一番搜索,我设法回答了自己的问题: 您可以使用trisurf函数:tri = delaunay(x,y); trisurf(tri,x,y,z); 如果您的数据比较密集,您需要进行shading interp(或者其他值,查看doc shading)处理,以避免由于网格而产生黑色斑块。
看起来你已经使用 DELAUNAY 和 TRISURF 来生成和绘制了一个三角网格表面。 作为一种替代方案,您还可以将定期间隔的网格拟合到非均匀间隔的点上,以生成可以使用SURF命令绘制的表面。 我在SO上的另一个问题中的答案中讨论了如何使用TriScatteredInterp类(或不推荐使用的函数GRIDDATA)来实现这一点。
edgeColor
设置为none
。 - Jonas