在 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
是您的输出。
(当然以上是伪代码,但应该能很好地说明解决你问题的方法。)
我有一个 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
是您的输出。
(当然以上是伪代码,但应该能很好地说明解决你问题的方法。)