2

我正在尝试实现类似于这篇文章中关于在 python 中重新网格化的回答。该帖子中的问题涉及对数组进行重新网格化,以使输出单元格包含对其有贡献的所有输入单元格的平均值。问题是每个输入单元格(我认为)仅对一个输出单元格有贡献——也就是说,没有真正的方法来解释输入单元格与两个输出单元格重叠的情况。

我想知道是否有一种方法可以概括该方法来解释单元格重叠 - 例如,如果我有两个输入箱,它们跨越从 0 到 1 和 1 到 2,并且输出单元跨越 0.75 到 2,我会希望采用某种加权平均值来计算输出单元格中的值,该值认识到跨越 1 到 2 的输入单元格对输出单元格的贡献应该比跨越 0 到 1 的单元格大约多 4 倍。

这本身不是插值,但我见过的几乎所有尝试做类似事情的方法都使用它。例如,直接向上插值的问题np.interp在于,如果多个输入单元对输出单元有贡献,则该例程会忽略一些点。

4

1 回答 1

0

我不太确定你在找什么,但我现在正在做类似的事情。我有两个统一的有限差分网格,我需要将信息从一个映射到另一个,然后再映射回来。这段代码适合我的需要。这个函数 x_to_x 创建了一个矩阵 M,这样我就可以将 M 与网格 a 上的数据进行点积并在网格 b 上生成数据。

def x_to_x(xa, da, xb, db):
    a = np.tile(xa, (np.size(xb), 1))
    b = np.tile(xb, (np.size(xa), 1)).T
    a_l = a - da / 2
    a_r = a + da / 2
    b_l = b - db / 2
    b_r = b + db / 2
    x_l = np.maximum(a_l, b_l)
    x_r = np.minimum(a_r, b_r)
    return np.maximum(x_r - x_l, 0.) / db

如果您有一个不均匀的网格,则 da 和 db 可以从标量调整为类似的东西,例如da = np.hstack(a[1:] - a[:-1], a[-1] - a[-2]).

于 2013-05-09T16:17:39.597 回答