我正在尝试实现一些插值技术 - 特别是使用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,但可以在分割之前应用掩码以完全避免警告。”
如何应用此功能以避免警告?
答案 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。