如何将 Matlab 的 interp1 与线性插值和剪辑外推一起使用



从 Matlab interp1的文档来看,似乎用于插值和外推的方法应该是相同的。但是,我想通过剪辑外推(保持极值(实现线性插值。使用interp1功能可以做到这一点吗?

看起来你不能直接从interp1函数中做到这一点:

外推策略,指定为字符串、"extrap"或实数 标量值。

  • 当希望 interp1 评估 域使用与插值相同的方法。
  • 当希望 interp1 返回特定常量值时指定标量值 对于域外的点。

但我想自己实现并不难:

function vq = LinearInterpWithClipExtrap(x,v,xq)
    vq = interp1(x,v,xq);
    [XMax, idxVMax] = max(x);
    [XMin, idxVMin] = min(x);
    idxMax = xq > XMax;
    idxMin = xq < XMin;
    vq(idxMax) = v(idxVMax);
    vq(idxMin) = v(idxVMin);
end

最新更新