【问题标题】:Interpolate over specified axis in MATLAB在 MATLAB 中对指定轴进行插值
【发布时间】:2019-05-10 13:14:37
【问题描述】:

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

【问题讨论】:

  • 等一下...你到底是什么意思,在数学上或几何上,通过沿轴插值向量?由于每个维度的唯一数据是一个值,因此插值(或外推)只会返回相同的值,不是吗?你能用一个小例子说明你的意思吗? 3 维还是 4 维?
  • 该功能类似于可以传入 fft:mathworks.com/help/matlab/ref/fft.htmldim 参数
  • 我很好奇你打算如何在单个数据点上执行fft(因为size(funtointerpolate, anyDim) == 1))。也许你的意思是写“n维矩阵”而不是“n维向量”。
  • @Dev-iL 是的,这肯定是一个错字!立即编辑。

标签: matlab multidimensional-array interpolation resampling gridding


【解决方案1】:

您可以为此目的使用interpn 函数:

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

V 是您的输出。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多