2

我正在尝试实现一些插值技术 - 特别是使用 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,但可以在除法之前应用掩码以完全避免警告时,它是什么意思。”

我该如何应用它来避免警告?

4

1 回答 1

0

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

但是,如果pchip节点之间几乎是线性的(它是为了你的数据吗?),
那么直接做双线性会更简单,无论是使用 scipy BivariateSpline
还是使用 scipy.ndimage.interpolation.map_coordinates ( ... order=1 ) 和 (ahem ) 包装器 Intergrid

于 2013-03-14T16:19:47.900 回答