About MATLAB interp1 de 那些事

interp1( )是最常用的插值函数。

一、基本表达式

vq = interp1(x,v,xq)
vq = interp1(x,v,xq,method)
vq = interp1(x,v,xq,method,extrapolation)

(注:上面显示的是最基本最常用的基本表达式,更多可见MATLAB官方文档。)

      其中,x和v是已知样本点,作为插值的基础矩阵,两者必须一一对应;xq是要查询的点,通过插x和v组成的一维表格来得到vq;method为插值方法;extrapolation为外插设置。

二、Method

插值方法 说明 连续性 备注
'linear' 线性插值。查询点处的插值基于每个相应维度中相邻网格点处的值的线性插值。这是默认的插值方法。 C0

*至少两个点;

*比'nearest'需要更多的内存和计算时间

'nearest' 最近邻插值。查询点处的插值是最近的采样网格点处的值。 Discontinuous

*至少两个点;

*中等内存要求;

*最快的计算时间

'next' 下一个邻居插值。查询点处的插值是下一个采样网格点处的值。 Discontinuous 同'nearest'
'previous' 上一个邻居插值。查询点处的插值是上一个采样栅格点处的值。 Discontinuous 同'nearest'
'pchip' 保形分段三次插值。查询点处的插值基于相邻网格点处值的保形分段三次插值。 C1

*至少4个点;

*内存和计算时间与'linear'相同

'cubic' 同'pchip' C1 同'pchip'
'v5cubic' MATLAB®5中使用的三次卷积。 C1 点的间距必须均匀。”cubic将在未来版本中取代v5cubic
'makima' 改进的Akima三次Hermite插值。查询点处的插值基于次数最多为3的多项式的分段函数。修改了Akima公式以避免过冲。 C1

*至少两个点;

*产生的波动小于'spline'大于'pchip'

'spline' 使用not-a-knot结束条件的样条曲线插值。查询点处的插值基于每个相应维度中相邻网格点处的值的三次插值。 C2

*至少4个点;

*要求比'pchip'更多的内存空间和计算时间

三、内插和外插

内插:插值点位于(x,v)的内部;

外插:插值点落于(x,v)的外部。

外插注意第一点:

  • If you specify the 'pchip''spline', or 'makima' interpolation methods, then the default behavior is 'extrap'.

  • All other interpolation methods return NaN by default for query points outside the domain.

外插注意第二点:

  • 如果希望interp1使用插值时使用的相同方法计算域外的点,在“extrapolation”处输入“extrap”。
  • 如果希望interp1为域外的点返回特定的常量值,需要给定此标量值。

附:

         1、interp1( ) 在x和xq相同但v不同的情况下,可以一次性对多个一维表格进行插值,详情可见MATLAB官方文档。

About MATLAB interp1 de 那些事_第1张图片

        2、要避免错的离谱的x或者v,如果错的离谱,那样子对插值会造成影响,还是要保证插值的基础点是正确滴。

 

你可能感兴趣的:(matlab)