matlab--插值函数系列(一维)

本文详细介绍了Matlab中的线性插值函数interp1,包括线性插值的几何解释、公式推导,以及不同插值方法(如'linear', 'nearest'等)和外插策略。通过实例展示如何在数据缺失时使用线性插值填补,并探讨其加权平均性质。
摘要由CSDN通过智能技术生成

一维数据插值 (interp1)

vq = interp1(x, v, xq, 'linear')

线性插值是一种曲线拟合方法,它使用线性多项式在一组离散的已知数据点的范围内构造新的数据点。

如果两个已知点 (x0, y0)和(x1, y1),线性插值是这些点之间的直线。对于区间x = (x0, x1)中的值,沿直线的y值由斜率方程给出:

(y-y0)/(x-x0) = (y1-y0)/(x1-x0)

可以从几何上推导出来,如下图所示。它是一种特殊的情况,多项式内插法与Ñ = 1:
在这里插入图片描述

为求解y这个方程,即x处的未知值,给出:

y = y0 + (x-x0)*(y1-y0)/(x1-x0) = [y0(x1-x) + y1(x-x0)]/(x1-x0)

这是区间x = (x0, x1)内线性插值的公式。在此区间之外,公式与线性外推相同。

这个公式也可以理解为加权平均。权重与端点到未知点的距离成反比;较近的点比较远的点影响更大。因此,权重为 1 - (x-x0)/(x1-x0)1 - (x1-x)/(x1-x0),这是未知点和每个端点之间的归一化距离。因为这些总和为 1:

y = y0*[1 - (x-x0)/(x1-x0)] + y1*[1 - (x1-x)/(x1-x0)] = y0*[1 - (x-x0)/(x1-x0)]  + y1*[(x-x0)/(x1-x0)] 

产生了上面给出的线性插值公式。

在此几何可视化中,绿色圆圈处的值乘以红色和蓝色圆圈之间的水平距离,等于红色圆圈处的值乘以绿色和蓝色圆圈之间的水平距离,以及蓝色圆圈处的值乘以绿色和红色圆圈之间的水平距离之和。

  • Matlab
vq = interp1(x, v, xq, method) 

method 默认方法为 ‘linear’。
method 可以指定备选插值方法:‘linear’、‘nearest’、‘next’、‘previous’、‘pchip’、‘cubic’、‘v5cubic’、‘makima’ 或 ‘spline’。

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

用于指定外插策略,来计算落在 x 域范围外的点。如果希望使用 method 算法进行外插,可将 extrapolation 设置为 ‘extrap’。也可以指定一个标量值,这种情况下,interp1 将为所有落在 x 域范围外的点返回该标量值。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值