没想到会用到:线性插值(Linear Interpolation)原理及使用

article/2025/10/2 17:26:06

各位博友们大家好,小弟遇到一些问题经常会去看大家的博客,所以也想加入大伙的阵营,每每看到一些好的东西,有些心得体会什么的也想与大伙分享。

 

1.关于插值

    插值,它根据已知的数据序列(也可以理解为坐标中一连串离散的点),找到其中的规律;然后根据找到的这个规律,来对其中尚未有数据记录的点进行数值估计。

    基于这样一种功能,我目前知道的应用是:1)它可以对数据中的缺失进行合理的补偿;2)它可以对数据进行放大或者缩小。当然还有别的功能,这个大家自己遇到的说不定比我多很多。

2.1.关于线性插值

    线性插值是一种针对一维数据的插值方法,它根据一维数据序列中需要插值的点的左右邻近两个数据点来进行数值的估计。当然了它不是求这两个点数据大小的平均值(当然也有求平均值的情况),而是根据到这两个点的距离来分配它们的比重的。

                                 

    这里我用了一张来自https://zh.wikipedia.org/wiki/%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC的图,它很好地显示了线性插值的原理。根据图中的假设:已知点(x0,y0)、(x1,y1),试问在x处插值,y的值是多少?用我们初中学过的知识,已知两个点的坐标可以得到一条线,又已知线上一点的一个坐标可以求得这个点的另一个坐标值。这就是线性插值的原理。

                                 

这样就求得了y值。

2.2.线性插值举例

    假如一天中,我测得了其中7个时间点的温度。1点、3点、8点、12点、15点、20点、24点摄氏度分别是8、9、16、23、22、18、10。请问用线性插值的方法得到这一天中1点到24点之间其他时间点的温度该怎么做?(线性插值是属于内插法,要去求这一天1点到24点以外的数据就不行了)

    数据小,计算量小,用手算就行,但是数据大,我们就只要借助计算机了,所以我还是用计算机求吧:

    法1:matlab有插值函数,interp1(),直接用就可以:

---------------------------------------------------

time = [1 3 8 12 15 20 24];
tem = [8 9 16 23 22 18 10];
time_i = 1:0.01:24;
tem_i = interp1(time,tem,time_i,'linear');
plot(time,tem,'o',time_i,tem_i);

---------------------------------------------------

 

    其中,如果你想知道其中某几个点的温度值,修改变量time_i就可以了,插值得到的对应time_i的温度值都存放在tem_i变量中。

    法2:自己写一个interp1类似的东东,也可以完成任务:(小弟给大家献丑了)

    建立一个m-file:取名self_interp1.m,内容如下:

----------------------------------------------------

% 自己写一个interp1类似功能的接口
% 这个接口中参数x需要是从小到大的序列,y则是随意
function [yi] = self_interp1(x,y,xi,method)
% 初始化yi,给它xi对应的列
col_xi = size(xi,2);
yi = zeros(1,col_xi);
% 检测使用的插值方法 这里期望的是'linear'
if strcmp(method,'linear'),
    % 找到每个xi在x序列中的位置
    col_x = size(x,2);
    for i = 1:col_xi,
        for j = 1:col_x-1, 
            % 假如需要计算插值公式
            if x(j+1) > xi(i), 
                yi(i) = y(j)+(y(j+1)-y(j))/(x(j+1)-x(j))*(xi(i)-x(j));
                break;
            end
            % 假如插值处的数据已经测得了,就直接把值给它,节约计算资源
            if x(j) == xi(i),
                yi(i) = y(j);
                break;
            end
        end
        % 以上没有把最后一个数据点考虑进去,需要加上
        yi(col_xi) = y(col_x);
    end
else
    error('插值方法请选择(linear)\n');
end
end

----------------------------------------------------

    接着像法1一样,只是原先的interp1()函数,在这里改成我们自己的self_interp1(),如下:

----------------------------------------------------

time = [1 3 8 12 15 20 24];
tem = [8 9 16 23 22 18 10];
time_i = 1:0.01:24;
tem_i = self_interp1(time,tem,time_i,'linear');
plot(time,tem,'o',time_i,tem_i);

----------------------------------------------------

    结果如下:

    结果看起来一样一样的,幸好没有让各位大哥失望。

    第一次写博客,写的很慢,下次再来和各位老哥一起学习双线性插值。

    PS: 本文允许所有人转载。


http://chatgpt.dhexx.cn/article/bmSMLfKt.shtml

相关文章

线性插值 多项式插值 样条插值 牛顿插值总结

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.什么是插值 在数值分析中,插值(interpolation)是一种通过已知的、离散的数据点,在范围内推求新数据点的过程…

常用线性插值的介绍和应用(双线性插值,三线性插值,平滑曲线插值)

常用线性插值的介绍和应用 线性插值 插值是计算机图形学中非常常用的技术。通常,数据是在常规网格上指定的(值写在2D或3D网格的顶点位置)或在线上(在一维的情况下),但是程序需要在该网格上的随机位置求值。…

线性插值 np.interp()

线性插值是指插值函数为一次多项式的插值方式,其在插值节点上的插值误差为零。线性插值相比其他插值方式,如抛物线插值,具有简单、方便的特点。线性插值的几何意义即为概述图中利用过A点和B点的直线来近似表示原函数。 线性插值法是认为现象…

我与插值萍水相逢:线性插值(Linear Interpolation)原理及使用

各位博友们大家好,小弟遇到一些问题经常会去看大家的博客,所以也想加入大伙的阵营,每每看到一些好的东西,有些心得体会什么的也想与大伙分享。 1.关于插值 插值,它根据已知的数据序列(也可以理解为坐标中一…

对线性插值的理解

【插值】 插值是用已知点求未知点的一种方法,而且通常是用两个已知点求一个未知点。(如果是用很多已知点求未知点一般用曲线拟合) 既然是用两个已知点求一个未知点,那么两个已知点之间的距离要尽可能的小,这样求出来…

python判断是否为数字类型_python判断字符串是否为数字

以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字:# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.…

使用正则表达式判断字符串是否为数字类型

java 判断字符串是否是数字 1.用JAVA自带的函数 publicstaticbooleanisNumeric(Stringstr){ for(inti0;i System.out.println(str.charAt(i)); if(!Character.isDigit(str.charAt(i))){ returnfalse; returntrue; 2.用正则表达式 首先要importjava.util.regex.Pattern和java.ut…

java判断字符串是否为数字

一:判断java中的字符串是否为数字,可以通过正则表达式来判断;其判断逻辑如下: 1、根据阿里巴巴代码规范,将Pattern设置为全局常量,通过 -?[0-9](\\\\.[0-9])? 进行匹配是否为数字 private static final P…

二次型化为标准型

将二次型化为标准形有利于我们了解二次型的简单形式、二次型的各种参数如正负惯性指数、得到二次型的规范形、对称矩阵合同的简单形等等。另外,化标准形也是解析几何化简二次曲线和二次曲面的需要。 下面,我们以两道题目为例说明计算二次型的标准形的2种…

二次型的标准型、规范型

若二次型只有平方项,则称二次型为标准型 如果标准型中,系数只有1,-1和0,那么称为二次型的规范型,因为标准型中,1,-1,0的个数是由正负惯性指数决定的,而合同的矩阵正负惯…

二次型,正定二次型

二次型:含有n个变量 x 1 , x 2 , . . . x n x_1,x_2,...x_n x1​,x2​,...xn​的二次齐次函数: f ( x 1 , x 2 , . . . x n ) a 11 x 1 2 a 12 x 1 x 2 a 13 x 1 x 3 a 14 x 1 x 4 . . . a 1 n x 1 x n f(x_1,x_2,...x_n)a_{11}x_1^2a_{12}x_1x_2a_{13}x_1x_3…

二次型的正定

实数二次型的类型 设为一个实二次型,若 自变量不全为0 若恒成立,则称f为一个正定二次型,称A为正定矩阵 若恒成立,则称f为一个半正定二次型,称A为半正定矩阵 若恒成立,则称f为一个负定二次型&#xff0…

线性代数-二次型及其正定性

二次型及其矩阵表示形式 二次型:含有n个变量的二次齐次多项式 二次型矩阵:xTAx,其中A为实对称矩阵 任给一个实二次型,就唯一确定一个实对称矩阵;反之,任给一个实对称矩阵,也可以唯一确认一个实二次型,因此,实二次型与实对称矩阵之间存在一一对应关系,称实对称矩阵A为二次型f的…

【考研线代】六. 二次型

文章目录 第六章 二次型6.1 二次型及其标准形6.1.1 概念6.1.2 合同基本性质6.1.3 题型 6.2 正定二次型6.2.1 概念6.2.2 定理 6.3 补充:解题技巧6.3.1 惯性定理的理解6.3.2 矩阵合同的充要条件6.3.3 配方法的坐标变换必须可逆6.3.4 正交变化化标准型 (&am…

线性代数(10):二次型

一、二次型 (1)定义 含有 n 个变量 x1,x2,…… ,xn 的二次齐次函数称为二次型; 对称矩阵 A 的秩也叫做二次型 f 的秩; (2) 例: 排列二次型 所对应的矩阵 …

二次型化标准形的三种方法

二次型化标准形的三种方法 将二次型化为标准形有利于我们了解二次型的简单形式、二次型的各种参数如正负惯性指数、得到二次型的规范形、对称矩阵合同的简单形等等。另外,化标准形也是解析几何化简二次曲线和二次曲面的需要。 下面,我们以两道题目为例…

二次型化标准形的五种方法

文章目录 1. 配方法2. 初等变换法3. 正交变换法4. 偏导数法5. 顺序主子式法 1. 配方法 用配方法化二次型为标准形的关键是消去交叉项,分如下两种情况: 情形1:如果二次型 f ( x 1 , x 2 , x 3 , ⋯ , x n ) {f \left( x\mathop{{}}\nolimits…

区别:二次型、标准形、规范形

文章目录: 一:二次型 二次型衔接 合同和相似 二:标准形 二次型化为标准形 1.配方法 2.正交变换法 三:规范形 标准形:不唯一规范形:唯一 一:二次型 二次型:对称矩阵 A&#…

速通二次型、二次型标准型、二次型规范型

浅过二次型 理解二次型可以从二次型的多项式入手: 显然,在系数都为实数的情况下,二次型矩阵即为一个实对称矩阵。 取一个代入值的例子就是: 二次型的标准型 OK,再从二次型的标准型的多项式入手,如下&…

二次型的来龙去脉

在学习二次型的时候没有好好理解概念,导致记住了可以用的结论,但往往遇到题目反应不过来,故这次对二次型进行一个详细剖析。 首先二次型是什么?是一个n元变量的二次齐次多项式,根据二次齐次多项式的定义(所…