【转】线性插值(Linear Interpolation)基本原理
转:https://blog.csdn.net/u010312937/article/details/82055431
今天在阅读大牛代码的时候,发现了Linear Interpolation一次,百度之,学习之,记录于此。
1.关于插值:
插值,是根据已知的数据序列(可以理解为你坐标中一系列离散的点),找到其中的规律,然后根据找到的这个规律,来对其中尚未有数据记录的点
进行数值估计。
应用有:
1)对数据中的缺失进行合理补偿
2)对数据进行放大或缩小
3)其他 (围笑(* ̄︶ ̄))
2.线性插值:
线性插值是针对一维数据的插值方法。它根据一维数据序列中需要插值的点的左右临近两个数据来进行数值估计。当然了它不是求这两个点数据大小的
平均值(在中心点的时候就等于平均值)。而是根据到这两个点的距离来分配比重的。
维基百科上图:
已知点(x0,y0)、(x1,y1)求取插值点x处的y.推导过程如下:

我在大牛的代码里发现他是这样写的,很有美感:
由于( y-y0)/(x-x0)=(y1-y0)/(x1-x0)
所以变换一下:(x-x0)/(x1-x0)=(y-y0)/(y1-y0)=k
那么:y=(1-k)*y0+k*y1
比较方便记忆
3.线性插值举例:
问: 假如一天中,我测得了其中7个时间点的温度。1点、3点、8点、12点、15点、20点、24点摄氏度分别是8、9、16、23、22、18、10。请问用线性插值的方法得到这一天中1点到24点之间其他时间点的温度该怎么做?
注:线性插值是属于内插法,要去求这一天1点到24点以外的数据就不行了
法一:matlab有插值函数,interp1()
time = [ ];
tem = [ ]; time_i = :0.01:; tem_i = interp1(time,tem,time_i,'linear'); plot(time,tem,'o',time_i,tem_i);
运行结果:

其中,如果你想知道其中的几个点的温度,修改变量time_i就可以了。对应于time_i的温度值存放着在tem_i变量中。
或者是根据插值原理自己来写函数:
%自己写一个interp1类似功能的接口
%在这个接口中参数x需要从大到小排列,y随意
function [yi]=self_interp1(x,y,xi,method)
% 初始化yi,给它xi对应的列
col_xi = size(xi,);
yi = zeros(,col_xi);
% 检测使用的插值方法 这里期望的是'linear'
if strcmp(method,'linear')
% 找到每个xi在x序列中的位置
col_x = size(x,);
for i = :col_xi,
for j = :col_x-,
% 假如需要计算插值公式
if x(j+) > xi(i),
yi(i) = y(j)+(y(j+)-y(j))/(x(j+)-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
然后进行调用:
time = [ ];
tem = [ ];
time_i = :0.01:;
tem_i = self_interp1(time,tem,time_i,'linear');
plot(time,tem,'o',time_i,tem_i);
结果跟上图一样。
【转】线性插值(Linear Interpolation)基本原理的更多相关文章
- 线性插值(linear interpolation)
线性插值通常用于:使用离散的样本来重建连续的信号.在计算机图形学中,这些样本可能是纹理.动画关键帧等. template <class T> T Lerp(T& a, T& ...
- 3.2 Piecewise Linear Interpolation(站点)
Newton Interpolation: https://www.youtube.com/watch? v=EyRQXA56asI Piecewise Linear Interpolation: h ...
- Unity3D - LINEAR INTERPOLATION
原文地址:http://unity3d.com/learn/tutorials/modules/beginner/scripting/linear-interpolation 水平有限,翻译粗略,欢迎 ...
- 游戏引擎架构 (Jason Gregory 著)
第一部分 基础 第1章 导论 (已看) 第2章 专业工具 (已看) 第3章 游戏软件工程基础 (已看) 第4章 游戏所需的三维数学 (已看) 第二部分 低阶引擎系统 第5章 游戏支持系统 (已看) 第 ...
- 《The Cg Tutorial》阅读笔记——动画 Animation
这段时间阅读了英文版的NVidia官方的<The Cg Tutorial>,借此来学习基本的图形学知识和着色器编程. 在此做一个阅读笔记. 本文为大便一箩筐的原创内容,转载请注明出处,谢谢 ...
- 从零开始一起学习SLAM | 用四元数插值来对齐IMU和图像帧
视觉 Vs. IMU 小白:师兄,好久没见到你了啊,我最近在看IMU(Inertial Measurement Unit,惯性导航单元)相关的东西,正好有问题求助啊 师兄:又遇到啥问题啦? 小白:是这 ...
- 线性插值&双线性插值&三线性插值
http://www.cnblogs.com/yingying0907/archive/2012/11/21/2780092.html 內插是数学领域数值分析中的通过已知的离散数据求未知数据的过程或方 ...
- OpenCASCADE Interpolation - Lagrange
OpenCASCADE Interpolation - Lagrange eryar@163.com Abstract. Power basis polynomial is the most simp ...
- [转]线性插值&双线性插值&三线性插值
转自:http://www.cnblogs.com/yingying0907/archive/2012/11/21/2780092.html 內插是数学领域数值分析中的通过已知的离散数据求未知数据的过 ...
随机推荐
- iptables禁止icmp端口
除192.168.62.1外,禁止其它人ping我的主机 #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-ty ...
- div+css布局的好处
改版的时候更方便,只需改动CSS文件 页面加载速度更快,结构清晰,页面简洁 表现与结构相分离 有利于SEO,排名更靠前
- 2014年NOIP普及组复赛题解
题目涉及算法: 珠心算测验:枚举: 比例简化:枚举: 螺旋矩阵:模拟: 子矩阵:状态压缩/枚举/动态规划 珠心算测验 题目链接:https://www.luogu.org/problem/P2141 ...
- pytorch实现BiLSTM+CRF用于NER(命名实体识别)
pytorch实现BiLSTM+CRF用于NER(命名实体识别)在写这篇博客之前,我看了网上关于pytorch,BiLstm+CRF的实现,都是一个版本(对pytorch教程的翻译), 翻译得一点质量 ...
- C# 配置文件存储 各种序列化算法性能比较
本文比较多个方式进行配置文件的存储,对比各个不同算法的读写性能. 在应用软件启动的时候,需要读取配置文件,但是启动的性能很重要,所以需要有一个很快的读取配置文件的方法. 如果你不想看过程,那么请看拖动 ...
- Python--day43--连表查询(重要)
- 【u224】传送机
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 刷完牙洗完脸,黄黄同学就要上课去了.可是黄黄同学每次去上课时总喜欢把校园里面的每条路都走一遍,当然,黄 ...
- linux 在 scull 中使用旗标
旗标机制给予 scull 一个工具, 可以在存取 scull_dev 数据结构时用来避免竞争情况. 但是正确使用这个工具是我们的责任. 正确使用加锁原语的关键是严密地指定要保护哪个 资源并且确认每个对 ...
- tf.squeeze()
转载自:https://www.cnblogs.com/mdumpling/p/8053376.html 原型 tf.squeeze(input, squeeze_dims=None, name=No ...
- 【t081】序列长度(贪心做法)
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个整数序列,我们不知道她的长度是多少(即序列中整数的个数),但我们知道在某些区间中至少有多少个整数 ...