在 MATLAB 中对指定轴进行插值

Interpolate over specified axis in MATLAB

我有一个 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.

您可以使用 interpn 函数来达到这个目的:

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

其中 V 是您的输出。

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