我需要能够使用来自 3 个向量的数据绘制曲面图。我找到了类似的信息,但似乎没有方法适用于我的数据。我的 X 和 Y 列间隔均匀,但不是按升序排列。我尝试了不同的方法,但它们似乎都没有给我想要的东西,这是一个将近点连接在一起的简单曲面。我尝试了以下方法:
[X Y]=meshgrid(x,y);
Z=griddata(x,y,z, X,Y);
surf(X,Y,Z);
这不是我想要的,因为它在 z=0 处创建了一个曲面,并使它看起来更像是一个体积图,而不仅仅是一个曲面。它在我的电脑上运行也很慢(可能是因为创建了所有的网格点)。如果我能得到不需要那么多内存的东西,那将是理想的(我的向量每个都有大约 20k 个值),但这不是必需的。
***编辑:我还尝试使用找到的 scatteredInterpolant 方法 here , 但该函数似乎无法被 MATLAB 识别,我收到此错误:
Undefined function 'scatteredInterpolant' for input arguments of type 'double'.
这也是我的问题的图片:
你可以看到我们看不到表面之下,有一些 z=0 平面挡住了它。
如果您有任何帮助,我们将不胜感激。
提前致谢。
**编辑 2:我添加了示例 vectors ,它们是我从左到右的 x、y 和 z 值。
***编辑 3:这是我得到的三角测量图像。如您所见,有些点由于某种原因被忽略了,这就产生了那些看起来又长又奇怪的蓝色三角形。
迈克
最佳答案
由于常规方法似乎失败了,我建议您手动进行。
- 创建
Z
矩阵满NaN
值。矩阵的大小应取决于您的x
和y
值(value)观。 - 遍历所有发生的
x
,y
,配对并把他们的(平均?)z
值在您的Z
的正确位置矩阵。 - 遍历所有
NaN
值并插入它们的值。也许使用filter2
. - 使用
surf
绘制生成的表面
关于matlab - 具有 3 个向量的曲面图 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20111381/