我正在尝试实现一些插值技术-特别是使用scipy pchip例程。

我要确定的是,是否可以通过分别插值每个坐标来执行规则空间2d数据的插值。

例如,如果我有:

(1 x m) vector of X coordinates
(1 x n) vector of Y coordinates

(m x n) matrix of Z coordinates //Z value corresponding to (x,y) pair


是否可以在每个维度上连续执行pchip插值,从而创建插值曲面?

Pchip期望数据以pchip(X,Z)的形式-X和Z均为一维数组。那么插值每个维度的最佳方法是什么?我应该为Z矩阵的每一列做pchip(X,Z)吗?然后在由第一次插值产生的矩阵的每一行上有pchip(Y,Z *)吗?

感谢您的帮助。我看过有关用pchip执行张量rpoduct插值的pv帖子,但是即使他在github上进行了更新,它也导致了我无法摆脱的令人讨厌的零除错误。

编辑:

我发现这张票贴出了关于我使用pchip的警告:
http://projects.scipy.org/scipy/ticket/1838

任何人都可以告诉我这是什么意思
“这样生成的infs / nans可以通过应用布尔条件掩码来过滤掉,但是该掩码可以在除法之前应用,从而完全避免了警告。”

我如何应用此方法来避免警告?

最佳答案

看一下顶部的图片
Bilinear interpolation
找到y1,y2最接近y的行,
pchip x以获得R1 R2(蓝色),
然后线性插值得到P(绿色)。
(您也可以按照其他顺序进行操作,然后对值x-then-y,y-then-x求平均值。)

但是,如果pchip在节点之间几乎是线性的(是否适合您的数据?),
那么直接进行双线性会更简单,
要么与
scipy BivariateSpline
或搭配
scipy.ndimage.interpolation.map_coordinates(... order = 1)
和(包装)包装
Intergrid

09-08 06:16