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

命令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。

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

  • 0
    点赞
  • 4
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:终极编程指南 设计师:CSDN官方博客 返回首页
评论

打赏作者

Jeossirey

有你们的存在才有我的存在!

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值