从 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