python - 2d插值,一次一维

时间:2013-03-11 06:23:08

标签: python numpy scipy interpolation

我正在尝试实现一些插值技术 - 特别是使用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都是1D数组。那么插入每个维度的最佳方法是什么?我应该为我的Z矩阵的每一列做pchip(X,Z)吗?然后在第一次插值得到的矩阵的每一行上pchip(Y,Z *)?

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

修改

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

有人可以告诉我它说的意思 “通过应用布尔条件掩码过滤掉如此生成的infs / nans,但可以在分割之前应用掩码以完全避免警告。”

如何应用此功能以避免警告?

1 个答案:

答案 0 :(得分:0)

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

但是如果pchip在结之间几乎呈线性关系(是否适用于您的数据?),则 那么直接做双线性会更简单, 要么用 scipy BivariateSpline
或者 scipy.ndimage.interpolation.map_coordinates(...订单= 1) 和(哼)包装 Intergrid