Griddata在Matlab中有不需要的插值

时间:2016-05-03 22:29:25

标签: matlab interpolation extrapolation

我试图在MATLAB中将数据从一个网格插入另一个网格。第一个网格在{​​{1}}中间隔不均匀,而第二个网格不是。当我执行插值(使用y)时,结果会推断出数据不存在的区域。

这是代码,以及插值之前和之后的图。

输入变量:

griddata

在:

Before interpolation

在: After interpolation

任何人都可以解释外推数据的暗蓝色三角形(从大约(6.4e5,-325)到(6.2e5,-425)对角连接,以及如何阻止它?

注意我忘了为两个地块保持相同的caxis;这对于说明不需要的插值发生的位置并不重要。

1 个答案:

答案 0 :(得分:2)

这是因为griddata根据定义不会外推,插值大致基于数据的凸包。如果查看有数据的输入值,凸包看起来与第二张图像中显示的结果类似。

这与使用none的{​​{1}}推断方法相同。

  

没有外推。 F.Points凸壳外的任何查询都返回NaN。

在这里,我展示了输入(scatteredInterpolantconvhull)的黑色凸体(Xin2)超出了插值结果。

Yin2

enter image description here

至于如何防止这种情况,您只能查询您知道的位于初始数据集边界内的点。至于如何这样做,你需要创建一些初始数据的大纲,并使用K = convhull(Xin2, Yin2); plot(Xin2(K), Yin2(K)) 来测试每个查询点,然后只传递查询点({{1此大纲中的inpolygonX_i。{/ 1}}。

要了解此大纲,您可以使用Y_i中的ordered_outline内容。