SciPy:稀疏数据的n维插值

3

我目前拥有一组n维数据点,每个数据点都带有与之相关的chi2值(通常n的范围为2到4)。

我想对所提供的数据点进行某种形式的非线性插值,以尝试最小化这个chi2值。当然,我也愿意尝试更好的方法来最小化这个chi2值。

目前,我的代码可以处理1D和2D的数组。

mesh = np.meshgrid(*[i['grid2'] for i in self.cambParams], indexing='ij')
chi2 = griddata(data[:,:-1], data[:,-1], tuple(mesh), method='cubic')

然而,scipy.interpolate.griddata仅支持在2D网格上进行线性插值,这意味着插值在最小值为数据中定义的点时是无用的。有没有人知道可能适用的替代插值方法,或者通常解决该问题的更好方法?

谢谢

1个回答

2

收到外部消息,经验证可行,因此在此公布答案以帮助未来的任何人。

SciPy具有Rbf插值方法(径向基函数),可以在任意维度上进行优于线性插值的插值。

对于具有行(x1,x2,x3 ...,xn,v)值的变量data,对原始帖子的以下代码修改允许插值:

rbfi = Rbf(*data.T)
mesh = np.meshgrid(*[i['grid2'] for i in self.cambParams], indexing='ij')
chi2 = rbfi(*mesh)

这里的文档非常有用,而且还有一个简单易懂的例子在这里,比上面的代码片段更容易理解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接