我有一个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
。
答案 0 :(得分:2)
您可以使用interpn
函数来实现此目的:
newV = interpn(oldAx1, ..., oldAxM, ..., oldAxN, oldV, ...
oldAx1, ..., newAxM, ..., oldAxN);
其中V
是您的输出。
(当然,上面是伪代码,但它应该很好地说明了解决问题的方法。)