我目前有一组n维数据点,每个数据点都有一个值(n通常在2到4之间)。
我想对我提供的数据点采用某种形式的非线性插值,以便我可以尝试最小化此值。当然,我愿意采用更好的方法来最小化值。
目前,我的代码适用于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网格上方的线性插值,这意味着插值是无用的,因为最小值将是数据中的已定义点。有没有人知道可能有效的替代插值方法,或者更好的解决问题的方法呢?
干杯
答案 0 :(得分:2)
从外部来源收到了一份有效的提示,所以发布答案以防将来有人帮助。
SciPy有一个Rbf插值方法(径向基函数),它允许比任意维度的线性插值更好。
使用data
行的变量(x1,x2,x3...,xn,v)
,对原始帖子的跟随代码修改允许插值:
rbfi = Rbf(*data.T)
mesh = np.meshgrid(*[i['grid2'] for i in self.cambParams], indexing='ij')
chi2 = rbfi(*mesh)
文档here is useful,并且有一个简单易懂的示例here,它比上面的代码段更有意义。