首页/文章/ 详情

双线性二次插值

7月前浏览8395

本文摘要(由AI生成):

本文介绍了线性插值和双线性插值的概念。线性插值是在两点之间插入一点,使其值落在两点值的连线上。而双线性插值则是在两个方向上进行线性插值,常用于二维空间中的插值计算。文章通过举例说明了双线性插值的过程,并给出了基于拉格朗日插值的计算公式。最后指出,双线性插值的结果与插值的顺序无关,无论是先进行哪个方向的插值,结果都是一致的。


线性插值的概念简单粗暴,就是两个点A,B,要在AB中间插入一个点C(点C坐标在AB连线上),就直接让C的值落在AB的值的连线上就可以了。如A点坐标(0,0),值为3,B点坐标(0,2),值为5,那要对坐标为(0,1)的点C进行插值,就让C落在AB线上,值为4就可以了。
但是如果C不在AB的线上肿么办捏,所以就有了双线性插值。双线性插值,顾名思义就是两个方向的线性插值加起来(这解释同样简单粗暴)。所以只要了解什么是线性插值,分别在x轴和y轴都做一遍,就是双线性插值了。
如图,已知P12,P22,P11,P21,但是要插值的点为P点,这就要用双线性插值了,首先在x轴方向上,对R1和R2两个点进行插值,这个很简单,然后根据R1和R2对P点进行线性插值,这就是所谓的双线性插值。

根据水平方向上的双线性二次插值,由f(i,j)和f(i+1,j)求取f(x,j),由
f(i,j+1)和f(i+1,j+1)求f(x,j+1),然后再根据这两点的二次插值求f(x,y)。

  根据拉格朗日插值,我们可以很容易的求取各点插值如下:
f(x,j)=(i+1-x)f(i,j)+(x-i)f(i+1,j)                             
f(x,j+1)=(i+1-x)f(i,j+1)+(x-i)f(i+1,j+1)                              
f(x,y)=(i+1-y)f(x,j)+(y-j)f(x,j+1)              
以上三式综合可以得到:
  f(x,y)=(j+1-y)(i+1-x)f(i,j)+(j+1-y)(x-i)f(i+1,j)+(y-j)(i+1-x)f(i,j+1)+(y-j)(x-i)f(i+1,j+1)    
令x=i+p,y=j+q得:
 f(i+p,j+q)=(1-q)(1-p)f(i,j)+p(1-q)f(i+1,j)+q(1-p)f(i,j+1)+

pqf(i+1,j+1)    

双线性插值的结果与插值的顺序无关。无论是先进行 y 方向的插值,然后进行 x 方向的插值,还是先进行 x 方向的插值,然后进行 y 方向的插值,所得到的结果是一样的。  

来源:数值分析与有限元编程
科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-01
最近编辑:7月前
太白金星
本科 慢慢来
获赞 5粉丝 13文章 325课程 0
点赞
收藏
作者推荐

匈牙利表示法

在变量名开头包含指出变量类型的字符。这种约定被称为匈牙利表示法,在 Windows 应用程序编程中很常见。对于变量firstNumber,如果使用匈牙利表示法,将为iFirstNumber,其中前缀 i 表示整型。如果这个变量为全局整型变量,其名称将为 g_iFirstNumber。近年来,匈牙利表示法不那么流行了,其中的原因之一是集成开发环境(IDE)得到了改进,能够在需要时(如被鼠标指向时)显示变量的类型。如下图所示:命名约定旨在方便程序员(而不是编译器)理解代码,程序员应该明智地选择合适的约定,并坚持使用。下面是一些常见的糟糕的变量名:int i = 0;bool b = false;变量的名称应指出其用途,对于前面的两个变量,像下面这样命名更佳:int totalCash = 0;bool isLampOn = false;此外,在团队协作时,最好在开发项目前就要采用哪种约定达成一致。处理既有的项目时,应采用项目已遵循的约定,以方便他人理解新增的代码。来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈