【问题标题】:python - 2d interpolation, one dimension at a timepython - 二维插值,一次一维
【发布时间】:2013-03-11 06:23:07
【问题描述】:

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

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

例如,如果我有:

(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 通过应用布尔条件掩码被过滤掉,但可以在除法之前应用掩码以避免完全警告。”

如何应用它来避免警告?

【问题讨论】:

    标签: python numpy scipy interpolation


    【解决方案1】:

    看看上面的图片 Bilinear interpolation.
    找到最接近 y,
    pchip x 的行 y1,y2 得到 R1 R2 (蓝色),
    然后对它们进行线性插值以获得 P(绿色)。
    (您也可以按其他顺序执行此操作,然后平均 x-then-y、y-then-x 的值。)

    但是,如果 pchip 在节点之间几乎是线性的(是为了您的数据吗?),
    那么直接做双线性会更简单, 要么与 scipy BivariateSpline
    或与 scipy.ndimage.interpolation.map_coordinates( ... order=1 ) 和(咳咳)包装 Intergrid.

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2015-12-02
      相关资源
      最近更新 更多