线性插值, 双线性插值讲解

本文介绍了线性插值和双线性插值的原理,线性插值通过连接数据点形成直线进行内插,而双线性插值是其在二维空间的扩展。在区间搜索中,采用二分法提高效率,对于插值点之外的外推计算,提出了最邻近和线性外推两种方法。此外,文章还揭示了一个常见误区,即错误地将2-D数据线性插值理解为单一线段,而非考虑整个面的插值。
摘要由CSDN通过智能技术生成

1 线性插值(Linear Interpolation):

  原理:已知一组(x, y)数据点,如[(x0, y0), (x1, y1), ......, (xn, yn)],通过在每一对点之间建立直线方程,来求解出未知点x所对应的y值,如图1.1,图1.2所示:

  *注:该方式其实也就是线性样条法,这与如Lagrange插值的插值方式,有一个本质性的区别。

  对多个点使用Lagrange插值,其实是使用 “1个” 综合性的多项式,来拟合出一个过这些点的曲线。使用线性样条,则是通过使用 “多个” 更为简单基本的多项式,来拟合出一个曲线。

图1.1

图1.2

  如上图中的例子,已知数据 (x2, y2) 与 (x3, y3),要计算 [x2, x3] 区间内某一位置 x 在直线上的y值,则根据(x2, y2) 与 (x3, y3)两点,得出直线方程公式1:

公式1

  变换一下,即的到公式2:

公式2 (*:其实这就是2个点情况下的Lagrange插值公式)

  因此,在代码实现时,可以通过对每段区间应用公式2,即可计算出每个区间内的线性插值结果。*注:其实就是对“每个”区间段,使用2个点情况下的Lagrange插值公式,从而得到“每个”区间段的一个多项式,这些多项式组成的方程组,即完整的曲线公式。

  在具体的代码实现中,有一个比较麻烦的地方是如何快速的确定出x在哪一个(x_i, y_i)区间,如图1.3所示,对于该问题,我采用了"二分法"进行的搜索,这相比于直接遍历搜索,能够很好的提高区间搜索的时间效率

图1.3

  对于落在插值点之外的情况,需要进行“外推”计算,如图1.4所示(*:像上面讲的那种待求解点位于插值点范围内的情况所进行的插值运算,我们一般也可称为“内插”)

图1.4

  外推法一般预测的误差比较大。一般应用中,我们可以选择下面如图1.5(最邻近插值的方式),1.6(继续使用线性方式进行外推)所示的两种外推方式:

图1.5 对范围之外的点,使用最邻近插值

图1.6 继续使用线性方式进行外推

2 双线性插值(Bilinear Interpolation):

  原理:双线性插值,其实就是线性插值在2维数据空间上的拓展

  如图2.1所示,先在x方向上:

  对点(x0, y0),(x1, y0)进行1次线性插值,得到点(x, y0)的值z_0
  对点(x0, y1),(x1, y1)进行1次线性插值,得到点(x, y1)的值z_1

图2.1

  接着,如图2.2所示,在y方向上:

  对点(x, y0),(x, y1)进行1次线性插值,得到点(x, y)的值z

图2.2

    总计使用了3次线性插值

    如图2.3,图2.4所示,是更为详细的数据产生过程图

图2.3

图2.4

   对于落在插值点之外的情况,需要进行“外推”计算,总共有8个区域,如图2.5中的棕色区域所示

图2.5 对边界之外的区域,可以使用最邻近方式、线性方式进行外推计算

   使用最邻近方式进行外推,如图2.6所示:

图2.6 使用最邻近方式外推

  使用线性方式进行外推,如图2.7所示:

图2.7 使用线性方式外推

***思考过程中产生的一些误区:

  这里有一个我在看插值算法过程中,所产生过的一个思维错误,在这里分享一下:

  为什么如图3.1的方式,不能做到2-D数据的线性插值?

图3.1

   原因:

  如图3.2所示,若采用上面的那种思路,则则在(x, y)处,则没有值可计算了,因为2维空间(x, y)对应的是一个面,因此待求解的坐标点所在区间其实是一个面区域,因此,上述那种思路,其实只能投影到面区域中的一条线上,这是错误的

图3.2

  本文原创,转载请注明出处

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰望星空-自然-7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值