我试图在MATLAB中将数据从一个网格插入另一个网格。第一个网格在{{1}}中间隔不均匀,而第二个网格不是。当我执行插值(使用y
)时,结果会推断出数据不存在的区域。
这是代码,以及插值之前和之后的图。
输入变量:
griddata
在:
任何人都可以解释外推数据的暗蓝色三角形(从大约(6.4e5,-325)到(6.2e5,-425)对角连接,以及如何阻止它?
注意我忘了为两个地块保持相同的caxis;这对于说明不需要的插值发生的位置并不重要。
答案 0 :(得分:2)
这是因为griddata
根据定义不会外推,但插值大致基于数据的凸包。如果查看有数据的输入值,凸包看起来与第二张图像中显示的结果类似。
这与使用none
的{{1}}推断方法相同。
没有外推。 F.Points凸壳外的任何查询都返回NaN。
在这里,我展示了输入(scatteredInterpolant
和convhull
)的黑色凸体(Xin2
)超出了插值结果。
Yin2
至于如何防止这种情况,您只能查询您知道的位于初始数据集边界内的点。至于如何这样做,你需要创建一些初始数据的大纲,并使用K = convhull(Xin2, Yin2);
plot(Xin2(K), Yin2(K))
来测试每个查询点,然后只传递查询点({{1此大纲中的inpolygon
和X_i
。{/ 1}}。
要了解此大纲,您可以使用Y_i
中的ordered_outline
内容。