【发布时间】:2015-12-12 01:51:51
【问题描述】:
我需要能够使用来自 3 个向量的数据来绘制曲面图。我找到了类似的信息,但似乎没有任何方法适用于我的数据。我的 X 和 Y 列是均匀分布的,但不是按递增顺序排列的。我尝试了不同的方法,但似乎都没有给我想要的东西,这是一个简单的曲面,将近点连接在一起。我尝试了以下方法:
[X Y]=meshgrid(x,y);
Z=griddata(x,y,z, X,Y);
surf(X,Y,Z);
这并不完全是我想要的,因为它在 z=0 处创建了一个曲面,使它看起来更像是一个体积图,而不仅仅是一个曲面。它在我的电脑上运行也很慢(可能是因为创建了所有的网格点)。如果我能得到不需要太多内存的东西,那将是理想的(我的向量每个都有大约 20k 个值),但这不是必需的。
***编辑:我也尝试使用找到here的scatterInterpolant方法,但MATLAB似乎无法识别该函数,我收到此错误:
Undefined function 'scatteredInterpolant' for input arguments of type 'double'.
这也是我的问题的图像:
你可以看到我们在地表下看不到,有一些 z=0 平面挡住了它。
如果您有什么要给我的,我们将不胜感激。
提前致谢。
**编辑 2:我添加了示例 vectors,它们是我从左到右的 x、y 和 z 值。
***编辑 3:这是我得到的三角测量的图像。正如您所看到的,由于某种原因,某些点被忽略了,从而产生了那些看起来很长且看起来很奇怪的蓝色三角形。
迈克
【问题讨论】:
-
Z(~Z)=NaN有帮助吗?或者,如果您使用doc griddata中所述的不同method怎么办?否则请发布一些示例代码和向量以完全复制问题。 -
@DennisJaheruddin 当我执行 Z(~Z)=NaN 时,我得到一个 flatter bottom 但我仍然无法看穿它,它会关闭它并形成一个卷。我的向量很大,我会尝试找到一种方法来链接它们。
-
您确定您的数据实际上不包含绘制的低值吗? x 和 y 值在 0.8 和 1.2 之间时的最小 z 是多少?另外,不要忘记尝试不同的 griddata 选项。
-
@DennisJaheruddin 是的,在做散点图的时候,我们可以清楚地看到曲面下没有点。我尝试了griddata中的所有方法,它们看起来都很相似。有没有办法不使用网格来做到这一点?如果它们彼此足够接近,是否没有仅查看分散点并尝试将它们与表面链接的选项?网格会使边缘呈正方形,这并不是很理想/ delaunay 方法几乎可以实现这一点,但三角剖分似乎存在错误,这会产生奇怪的链接、颜色和相同的 z=0 平面问题。