森之张卫东 发表于 2015-8-18 21:50

一维数据插值—— interp1


命令1  interp1
功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。各个参量之间的关系示意图为图2-14。

图2-14  数据点与插值点关系示意图
格式 yi = interp1(x,Y,xi)        %返回插值向量yi,每一元素对应于参量xi,同时由向量x与Y的内插值决定。参量x指定数据Y的点。若Y为一矩阵,则按Y的每列计算。yi是阶数为length(xi)*size(Y,2)的输出矩阵。
yi =interp1(Y,xi)          %假定x=1:N,其中N为向量Y的长度,或者为矩阵Y的行数。
yi = interp1(x,Y,xi,method)  %用指定的算法计算插值:
’nearest’:最近邻点插值,直接完成计算;
’linear’:线性插值(缺省方式),直接完成计算;
’spline’:三次样条函数插值。对于该方法,命令interp1调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函数。命令spline用它们执行三次样条函数插值;
’pchip’:分段三次Hermite插值。对于该方法,命令interp1调用函数pchip,用于对向量x与y执行分段三次内插值。该方法保留单调性与数据的外形;
’cubic’:与’pchip’操作相同;
’v5cubic’:在MATLAB 5.0中的三次插值。
对于超出x范围的xi的分量,使用方法’nearest’、’linear’、’v5cubic’的插值算法,相应地将返回NaN。对其他的方法,interp1将对超出的分量执行外插值算法。
yi =interp1(x,Y,xi,method,'extrap')     %对于超出x范围的xi中的分量将执行特殊的外插值法extrap。
yi =interp1(x,Y,xi,method,extrapval)  %确定超出x范围的xi中的分量的外插值extrapval,其值通常取NaN或0。
例2-31
>>x = 0:10; y = x.*sin(x);
>>xx = 0:.25:10; yy = interp1(x,y,xx);
>>plot(x,y,'kd',xx,yy)
插值图形为图2-15。
例2-32
>> year = 1900:10:2010;
>> product =   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)
>>x = 1900:1:2010;
>>y = interp1(year,product,x,'pchip');
>>plot(year,product,'o',x,y)
插值结果为:
p1995 =
        252.9885
插值图形为图2-16。
     
图2-15  一元函数插值图形                图2-16  离散数据的一维插值图

页: [1]
查看完整版本: 一维数据插值—— interp1