在MATLAB中的指定轴上插补

时间:2018-12-09 11:59:39

标签: matlab multidimensional-array interpolation resampling gridding

我有一个n维矩阵funtointerpolate,我希望沿其一个轴(称为轴m)执行一维插值。在Python中,诸如interp1d之类的插值函数允许指定插值轴。在MATLAB中,我看不到使用interp1或任何其他内置插值函数的明显方法。理想情况下,该函数应类似于

interpolatedfun = interp1(funtointerpolate,oldpoints,newpoints,axis = m)

解决此问题的一种明显方法是在funtointerpolate中的所有其他轴上循环,但这很麻烦。进行插值的动机是,沿funtointerpolate轴沿非均匀网格评估m中的数据。我需要它在m上保持统一。从数学上来说,假设我有一些张量对象

A_{ijk}

是沿着j索引沿着不均匀的网格求值的。然后,我希望找到一个新的A,使第j个索引由在统一网格上求值的值组成。我知道第j个索引的新统一网格newpoints和旧网格oldpoints

1 个答案:

答案 0 :(得分:2)

您可以使用interpn函数来实现此目的:

newV = interpn(oldAx1, ..., oldAxM, ..., oldAxN, oldV, ...
               oldAx1, ..., newAxM, ..., oldAxN);

其中V是您的输出。

(当然,上面是伪代码,但它应该很好地说明了解决问题的方法。)