插值函数总结(下篇之一维插值)

Posted Jeossirey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插值函数总结(下篇之一维插值)相关的知识,希望对你有一定的参考价值。

命令1  interp1
功能:一维数据插值 (表格查找)。该命令对数据点之间计算内插值。它可以找出一元函数f(x)在中间点的数值,其中函数f(x)由所给数据决定。

格式1:y1 = interp1(x,y,x1) 
最后返回插值向量y1,每一元素对应于参量x1,同时由向量x与y的内插值决定。若y为一矩阵,则按y的每列计算。返回的y1是阶数为 length(x1)*size(y,2) 的输出矩阵。大家可以去尝试一下。

参考实例:

x = 0:10;
y = x.*sin(x);
x1 = 0:0.25:10; 
y1 = interp1(x,y,x1);
plot(x,y,'k*',x1,y1)

格式2:y1= interp1(y,x1) 
假定x1=1:N,其中N为向量y的长度,或者为矩阵y的行数。

参考实例:

x=0:2:24;
y=[12 9 10 9 18 24 28 27 25 20 18 15 13];
x1=1:13;
y1 = interp1(y,x1)

输出结果为:

y1 = 1×13    
    12     9    10     9    18    24    28    27    25    20    18    15    13

格式3:y1 = interp1(x,y,x1,method) 

x:原始数据点   y:原始数据点   x1:插值点   y1:插值点

用指定的 method 计算插值:
’nearest’:最近邻点插值,直接完成计算;
’linear’:线性插值(缺省方式),直接完成计算;
’spline’:三次样条函数插值。对于该方法,命令interp1 调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函数。命令spline 用它们执行三次样条函数插值;
’pchip’:分段三次Hermite 插值。对于该方法,命令interp1 调用函数pchip,用于对向量x与y 执行分段三次内插值。该方法保留单调性与数据的外形;
’cubic’:与’pchip’操作相同;
’v5cubic’:在MATLAB 5.0 中的三次插值。
对于超出x范围的x1的分量,使用方法’nearest’、’linear’、’v5cubic’的插值算法,相应地将返回NaN。对其他的方法,interp1 将对超出的分量执行外插值算法。

参考实例:

year = 1900:10:2010;
product = [75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505 249.633 256.344 267.893 ];
p1995 = interp1(year,product,1995)
x1 = 1900:1:2010;
y1 = interp1(year,product,x,'pchip');
plot(year,product,'o',x1,y1)

结果展示:

格式4:y1= interp1(x,y,x1,method,'extrap') 
对于超出x范围的x1中的分量将执行特殊的外插值法extrap。


格式5:y1= interp1(x,y,x1,method,extrapval) 
确定超出x范围的x1中的分量的外插值extrapval,其值通常取NaN 或0。

到这里的我们已经给大家介绍完了一维的数据插值,我们在下一章将介绍二维的插值以及更高维度的插值!

以上是关于插值函数总结(下篇之一维插值)的主要内容,如果未能解决你的问题,请参考以下文章

插值函数总结(下篇之二维插值)

numpy的一维线性插值函数

拟合函数:线性插值_样条插值(一维,二维,三维)_最小二乘拟合

非线性方程(组):一维非线性方程插值迭代方法 [MATLAB]

MATLAB中的一维插值与函数拟合

MATLAB中的一维插值与函数拟合