大型2d掩模阵列的插值

时间:2012-03-10 07:29:29

标签: python matrix numpy scipy interpolation

我有一个numpy蒙面矩阵。并希望在蒙面区域进行插值。 我尝试了RectBivariateSpline,但它没有将蒙版区域识别为蒙版,并使用这些点进行插值。在创建X,Y,Z 1d向量后,我也尝试了bisplrep。它们各自的长度为45900.计算Bsplines需要花费大量时间。最后在运行bisplev时出现了Segmentation故障。 2d矩阵的大小为270x170。

有没有办法让RectBivariateSpline不在插值中包含遮罩区域?或者还有其他方法吗? bisplrep太慢了。

感谢你, indiajoe

更新: 当网格很小时,具有“线性”功能的scipy.interpolate.Rbf正在做合理的工作。但是当数组很大时它会出错。

还有其他功能可以让我对矩阵进行插值和平滑吗?

我还得出以下结论。如果我错了,请纠正我。

1)RectBivariateSpline需要完美的填充矩阵,因此不能使用蒙板矩阵。

1 个答案:

答案 0 :(得分:1)

很晚,但......

我遇到了类似于你的问题,并且使用bisplines得到了分段错误,并且rbf也出现了内存错误(其中“thin_plate”函数对我很有用。

由于我的数据是非结构化的,但是以结构化的方式创建,我使用下采样到数据点密度的一半或三分之一,这样我就可以使用Rbf。我建议你做的是(非常低效,但仍然比完全不做)在许多重叠区域细分矩阵,然后为每个区域创建rbf插值器,然后在插入一个点时选择适当的插值器。 / p>

另外,如果你有一个蒙面数组,你仍然可以在未屏蔽的数组中执行插值,然后在结果上应用蒙版。(实际上没有,请参阅注释)

希望这有助于某人