-
2021-04-22 12:21:00
原标题:简单调研多维插值方法
■2020-11-07 11:36:50
以前的时候用过二维的插值, 见 二维三次卷积插值算法及Fortran代码 [1], 也用过matlab自带的插值方法, 见 Matlab插值曲面及其曲率的计算 [2]. 最近因为需要自己实现多维插值方法, 就进行了简单的调研, 简单地罗列一下所得.
中文世界
先简单搜索一下中文的资料, 看看中文世界能找到什么信息, 发现大部分都是地学相关的. 虽然参考意义不大, 但至少熟悉一下相关的名词.
■"自然地理要素空间插值的几个问题", 地理研究, 23(4), 2004■"多维线性插值方法的构建及应用分析", 南水北调与水利科技, 11(4), 2013■"复杂地形影响下四川省逐月气温空间插值方法研究", 生态与农村环境学报, 35(6), 2019
常用的空间插值方法可以分为几何插值法、数学插值法以及地学插值方法。
几何插值方法的基本原理是距离越近相似性越高, 常用方法包括泰森多边形法和反距离权重插值法, 适用于下垫面特征较为一致的地区, 而在地形起伏较大的区域其插值误差普遍较大。
数学插值方法是假定插值要素在研究区域呈一定的曲面分布, 通过拟合曲面方程对未知站点进行插值, 常见方法有趋势面法和样条插值法。
地学插值法主要指克里格插值法, 其原理是利用区域化变量数据和半变异函数的结构特点, 对未知点的区域化变量进行最优无偏估计。
数学插值方法和地学插值方法均是根据数学原理通过已知点的信息拟合区域曲面方程或者半变异函数对未知点变量进行无偏估计, 因对区域下垫面差异性较大的区域具有一定的适用性, 且通常已知站点密度越大插值结果精度越高。然而由于区域下垫面的差异性的分布特征, 其空间变量场的分布是复杂多样的, 如何确定合理的曲面方程和半变异函数来准确描述空间变量场的分布特征是十分困难的。实际上, 区域变量场的分布在空间维度的上通常满足一定的递变规律, 因此在空间任一维度上, 均可通过线性插值对未知点变量值进行近似估计。然后, 通过权衡空间未知点变量值在各个维度的权重, 组合多维度线性插值结果, 就能得到该变量值的非线性多维空间插值结果。
常用的插值模型有样条函数法( SF )、反距离权重法( IDW )、克立格法( KRGE )等.
样条函数是自然样条函数在二维空间上的推广,使用函数逼近曲面的方法,在空间插值时准确 地通过实测样点拟合出连续光滑的曲面。
反距离权重法是对采样点进行线性的加权来决定输出的栅格值,加权值与距离成反比,采样点离输出栅格越远,对输出栅格的影响越小。
普通克立格法又称局部最优线性无偏估计法,是建立在变异函数理论结构分析基础之上。所谓线性是指估计值是样本值的线性组合,即加权线性平均;无偏是指理论上估计值的平均值等于实际样本值的平均值,即估计的平均误差为 0 ,最优势指估计的误差平方差最小。
多元规划分析模型是应用数理统计方法,建立气象要素与影响气象要素空间插值因子的多元回归模型。在该研究中是建立基于经度、纬度和海拔高度的多年平均气温多元回归模型,并计算残差.
■10种插值方法在物探数据处理中的对比 [3]这里对多种方法进行了简介, 实际对比. 其中提到了径向基函数方法.
英文世界
通过中文粗略了解了一下之后, 再看看英文世界中的说法.
径向基函数
看了上面这些信息之后, 觉得径向基函数方法可能最好, 接下来就看看相关的信息和实现方法.
■Radial basis function interpolation [6]wiki的说明.■径向基函数 [7]径向基函数的介绍. 放在机器学习中的, 其他的资料也很有价值.■径向基函数工作原理 [8]地学中也使用这种方法.■什么是径向基核函数?什么是径向基核插值?两者什么关系? [9]知乎的一篇回答■径向基函数(Radial Basis Function)插值 [10]找到了实现方法和代码. 基本就解决问题了, 因为不需要专门研究这个问题, 就此作罢.
责任编辑:
更多相关内容 -
线性插值公式
2019-04-25 20:12:15问题描述: 已知某多叶调节风阀,当叶片数n=3时,叶片与气流...当x=30时,求y的线性插值 问题分析: 线性插值公式: 其余代码里一切皆有 线性插值问题 输入 20 2.8 45 6.5 30 #include<cstdio> #include&l...问题描述:
已知某多叶调节风阀,当叶片数n=3时,叶片与气流方向成x度,某局部阻力系数y值
x 0 15 20 45 60 75
y 0.25 0.7 2.8 6.5 20 60
当x=30时,求y的线性插值
问题分析:
线性插值公式:
其余代码里一切皆有线性插值问题
输入
20 2.8 45 6.5 30
#include<cstdio> #include<cmath> void show(double a[]) { double m; scanf("%lf",&m);//待测值 printf("线性插值公式:y = (x-%.2lf)/%.2lf*%.2lf + (x-%.2lf)/%.2lf*%.2lf\n",a[2],a[0]-a[2],a[1],a[0],a[2]-a[0],a[3]);//将数组a中数据代入线性插值公式 printf("结果:%.2lf\n",1.*(m-a[2])/(a[0]-a[2])*a[1]+(m-a[0])/(a[2]-a[0])*a[3]); } int main() { double a[4]; for(int i=0; i<4; ++i) scanf("%lf",a+i);//分别输入X0,Y0,X1,Y1 show(a); return 0; }
运行结果:
线 性 插 值 公 式 : y = (x-45.00)/-25.00*2.80 + (x-20.00)/25.00*6.50 结 果 : 4.28
-
python线性插值解析
2021-01-14 07:46:36python线性插值解析在缺失值填补上如果用前后的均值填补中间的均值,比如,0,空,1,我们希望中间填充0.5;或者0,空,空,1,我们希望中间填充0.33,0.67这样。可以用pandas的函数进行填充,因为这个就是线性插值...python线性插值解析
在缺失值填补上如果用前后的均值填补中间的均值,比如,0,空,1,我们希望中间填充0.5;或者0,空,空,1,我们希望中间填充0.33,0.67这样。
可以用pandas的函数进行填充,因为这个就是线性插值法
df..interpolate()
dd=pd.DataFrame(data=[0,np.nan,np.nan,1])
dd.interpolate()
补充知识:线性插值公式简单推导
以上这篇python线性插值解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
时间: 2020-07-04
一维插值 插值不同于拟合.插值函数经过样本点,拟合函数一般基于最小二乘法尽量靠近所有样本点穿过.常见插值方法有拉格朗日插值法.分段插值法.样条插值法. 拉格朗日插值多项式:当节点数n较大时,拉格朗日插值多项式的次数较高,可能出现不一致的收敛情况,而且计算复杂.随着样点增加,高次插值会带来误差的震动现象称为龙格现象. 分段插值:虽然收敛,但光滑性较差. 样条插值:样条插值是使用一种名为样条的特殊分段多项式进行插值的形式.由于样条插值可以使用低阶多项式样条实现较小的插值误差,这样就避免了使用高阶多项
(1).函数 y = sin(x) (2).数据准备 #数据准备 X=np.arange(-np.pi,np.pi,1) #定义样本点X,从-pi到pi每次间隔1 Y= np.sin(X)#定义样本点Y,形成sin函数 new_x=np.arange(-np.pi,np.pi,0.1) #定义差值点 (3).样条插值 #进行样条差值 import scipy.interpolate as spi #进行一阶样条插值 ipo1=spi.splrep(X,Y,k=1) #样本点导入,生成参数 iy1
一.背景 在野外布设700米的测线,点距为10米,用GPS每隔50米测量一个坐标,再把测线的头和为测量一个坐标.现在需使用线性插值的方法求取每两个坐标之间的其他4个点的值. 二.插值原理 使用等比插值的方法 起始值为 a 终止值为 b 步长值为 (a-b)/5 后面的数分别为 a+n, a+2n, a+3n, a+4n 三.代码实习对 x 插值 interx.py import numpy as np f = np.loadtxt('datax.txt') a = f[:, 0] b = f[:
本文实例为大家分享了Python实现分段线性插值的具体代码,供大家参考,具体内容如下 函数: 算法 这个算法不算难.甚至可以说是非常简陋.但是在代码实现上却比之前的稍微麻烦点.主要体现在分段上. 图像效果 代码 import numpy as np from sympy import * import matplotlib.pyplot as plt def f(x): return 1 / (1 + x ** 2) def cal(begin, end): by = f(begin) ey =
简单类型 内置到 Python 编程语言中的简单数据类型包括: bool int float complex 支持简单数据类型不是 Python 独有的功能,因为多数现代编程语言都具有完整类型补充.例如 Java? 语言甚至有一组更丰富的原始数据类型: byte short int long float double char boolean 但是,在 Python 中,简单数据类型并不是原始数据类型,而是完善的对象
直接列出函数: numpy.interp(x, xp, fp, left=None, right=None, period=None) x - 表示将要计算的插值点x坐标 xp - 表示已有的xp数组 fp - 表示对应于已有的xp数组的值 left - 表示当x值在xp中最小值左边时,x对应y的值为left right - 表示当x值在xp中最大值右边时,x对应y的值为right (left和right表示x在xp的域外时,y的取值) example: 1. import numpy as n
如下所示: list=[1,2,3,4,5,6,7,8,9,0,11,0,13,14,15,16,17,18,19,20] #把list分为长度为5的4段 for j in range(0,len(list),5): matrix.append(list[j:j+5]) matrix=np.array(matrix)#转array型 print matrix[0]#输出第一段 结果: [[ 1 2 3 4 0] [ 6 7 8 0 0] [11 0 13 14 15] [16 0 18 19 2
本文实例为大家分享了python使用Matplotlib绘制分段函数的具体代码,供大家参考,具体内容如下 环境 Python3 Mac OS 代码 # coding:utf-8 """ Author: roguesir Date: 2017/8/30 GitHub: https://roguesir.github.com Blog: http://blog.csdn.net/roguesir """ import numpy as np impo
我就废话不多说了,直接上代码吧! #方法一 def list_cut(mylist,count): length=len(mylist) merchant=length//count re_merchant=merchant+1*(0 if length%count==0 else 1) begin=0 result_list = [] while (count>0): result_list.append(mylist[begin:begin+re_merchant]) begin=begin
一维插值 插值不同于拟合.插值函数经过样本点,拟合函数一般基于最小二乘法尽量靠近所有样本点穿过.常见插值方法有拉格朗日插值法.分段插值法.样条插值法. 拉格朗日插值多项式:当节点数n较大时,拉格朗日插值多项式的次数较高,可能出现不一致的收敛情况,而且计算复杂.随着样点增加,高次插值会带来误差的震动现象称为龙格现象. 分段插值:虽然收敛,但光滑性较差. 样条插值:样条插值是使用一种名为样条的特殊分段多项式进行插值的形式.由于样条插值可以使用低阶多项式样条实现较小的插值误差,这样就避免了使用高阶多项
-
[MATLAB]--数据插值(interp1/2多维插值)
2020-03-20 16:53:43样条插值 spline linear MATLAB本试验取材于中南大学《科学计算与MATLAB应用》
一、引例–零件加工问题
>> x1=0:0.1:15; >> x=[0,3,5,7,9,11,12,13,14,15]; >> y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6]; >> y1=interp1(x,y,x1,'spline'); >> plot(x1,y1) >>
二、数据插值的计算机制
interp1():一维插值函数。
调用格式:- y1=interp1(x,y,x1,method)
- 根据X、Y的值,计算函数在X1处的值。其中,X,Y是两个等长的已知向量,分别表示采样掉和采样值。X1是一个向量或标量,表示要插值的点。
三、数据插值的实现方法
methos用于指定插值方法,常用的取值有以下四种:
1. linear:线性插值,默认方法。将与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
2. nearest:最近点插值,选择最近样本点的值作为插值数据。
3. pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
4. spline:3次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。
- 线性插值和最近点插值方法比较简单。其中线性插值方法的计算量与样本点n无关。n越大,误差越小
- 3次埃尔米特插值和3次样条插值都能保证曲线的光滑性。相比较而言,3次埃尔米特插值具有保形性;而3次样条插值要求其二阶导数也连续。
- 所以插值函数的形态更好。
interp2():二维插值函数
调用格式:
Z1=interp2(X,Y,Z,X1,Y1,method)
其中,X、Y是两个向量、表示两个参数的采样点,Z是采样点对应的函数值。X1、Y1是两个标量或向量,表示要插值的点。
四、应用案例–粮储仓的通风控制问题
若粮食水分吸收和蒸发量相等,这个湿度称为平衡点湿度。平衡点湿度跟粮温、粮湿有关。
>> x=20:10:90; y=(0:5:20)'; z=[8.9,10.32,11.3,12.5,13.9,15.3,17.8,21.3;8.7,10.8,11,12.1,13.2,14.8,16.55,20.8;8.3,9.65,10.88,12,13.2,14.6,16.4,20.5;8.1,9.4,10.7,11.9,13.1,14.5,16.2,20.3;8.1,9.2,10.8,12,13.2,14.8,16.9,20.9]; xi=20:90; yi=(0:20)'; zi=interp2(x,y,z,xi,yi,'spline'); surf(xi,yi,zi) >>
建模题目—数据插值应用举例- 机动车刹车举例问题
编程思路:- 第一步:建立速度和停车视距向量。
- 第二步:以1为单位,对采样区间内所有速度进行插值,计算出相应的停车视距。
- 第三步:求出停车视距120所对应的速度。
- 第四步:绘图展示
>> v=20:10:150; >> vs=v*(1000/3600); >> d1=10*vs; >> d2=[3.15,7.08,12.59,19.68,28.34,38.57,50.4,63.75,78.71,95.22,113.29,132.93,154.12,176.87]; >> d3=10; >> d=d1+d2+d3; >> vi=20:150; >> di=interp1(v,d,vi,'spline');
>> x=abs(di-120); >> [y,i]=sort(x); >> vi(i(1)); >> plot(vi,di,vi(i(1)),di(i(1)),'rp') >>
第二问:设计一条最高时速为125km/h的高速公路,则设计人员应该保证驾驶者在公路上任一点的可视距离为多少米?>> j=find(vi==125); >> plot(vi,di,125,480.14,'rp') >> di(j) ans = 480.1373 >>
总结:公路设计是一个复杂的工程,除了地形、地质等因素之外,驾驶者的可视距离也要考虑在内,以与设计时速相匹配,从设计上保障安全。 -
将二维数组进行线性插值
2011-12-01 10:55:59将TXT文件中的数据读进二维数组,并对列数据进行线性插值再以txt文件将数据输出 -
一维、二维与多维插值
2015-07-29 16:00:33转自:http://hi.baidu.com/%CD%EE%CE%F7%D1%A7%D4%BA%D6%DC%D3%EE/blog/item/4a154c093116e6a92fddd445.html ... 插值运算是根据数据的分布规律,找到一个函数表达式可以连接已知的各点,并用此函 -
时序数据插值,对GPS采样数据进行线性插值
2022-03-04 17:29:02此篇为上一篇的接续,对时序数据进行插值 上篇文章 解析kml文件,提取经纬度信息存入csv 将kml里面的信息提取了出来,但是有些数据间隔太大,甚至几十秒才一个采样点,需求对这样的数据进行插值,形成每秒一个采样点... -
线性插值漫谈
2017-11-21 00:14:441.线性插值简介 线性插值是采用一次多项式上进行的插值计算,任意给定两个值A和B,那么在A和B之间的任意值可以定义为 P(t) = A * (1 - t) + B * t,0 t从0逐渐增大到1,就是P(t)的值就是从值A开始,逐渐变化为值... -
数学建模准备 插值(拉格朗日多项式插值,牛顿多项式插值,分段线性插值,分段三次样条插值,分段三次...
2019-09-03 23:20:46文章目录一、基础概念插值是什么拟合是什么插值和拟合的相同点插值和拟合的不同点二、常用的基本插值方法高次多项式插值拉格朗日多项式插值牛顿插值差商矩阵低次多项式插值(不易震荡)分段线性插值Hermite插值三次... -
IDL数学分析与插值
2019-09-16 19:42:38实行双线性内插,p为输入的二维数组,ix为P中个元素在插值完成后所在的对应下标。 IDL> a=[[2,4],[6,8],[10,12]] IDL> ix=[0,2] IDL> jy=[0,2,4] IDL> result=bilinear(a,ix,jy) IDL> result 2 4 10 12 10 12 ... -
8种fortran的插值程序
2010-10-14 20:03:488种fortran的插值程序 非常有用 经常用得到 -
MATLAB插值
2021-04-18 04:43:244.5 插值插值就是在已知数据之间计算估计值的过程,是一种实用的数值方法,是函数逼近的重要方法。在信号处理和图形分析中,插值运算的应用较为广泛,MATLAB提供了多种插值函数,可以满足不同的需求。4.5.1 一维数据... -
数值计算方法实验 分段插值 报告
2010-08-02 16:37:35这个程序中本人尽可能让几个数组共用存贮单元,可以节省存贮空间。 -
Julia实现经典的插值算法
2019-12-05 09:45:32插值法是多项式拟合中的重要方法,本文通过julia实现了拉格朗日(Lagrange)插值、高阶差商、牛顿(Newton)插值、埃尔米特(Hermite)插值以及样条插值中的三弯矩法等。 -
js图像处理 双线性插值 双三次插值法 实现
2020-12-19 20:55:53介绍在网页中利用canvas进行绘图时,遇到一个问题,原始的数据分辨率很小,而图片要放大到整个网页,所以需要把数据进行插值放大。学习了双线性插值和三次内插法插值,两种方式实现效果不同,双线性插值放大后,会有... -
数学建模系列-预测模型(三)--插值与拟合(线性回归法)
2021-08-25 11:32:55插值与拟合:线性回归模型,可应用于预测模型问题以及优化模型问题、评价模型中也有部分应用。一种模型建立的最经典基本方法。属于黑箱模型。 插值和拟合的区别 插值:原则上曲线要通过图像中给出的点。如果要求这个... -
matlab一维插值函数
2021-04-20 12:57:26一维插值 一、插值的定义 二、插值的方法 拉格朗日插值 分段线性插值 三次样条插值 三、用Matlab解插值问题 返回 二维插值 一、二维插值定义 二、网格节点插值法 ......x 用三次样条插值选取11个基点计算插值(ych) ... -
MATLAB数据插值和曲线拟合
2020-08-23 22:15:07根据是用分段直线、多项式或样条函数来作为插值函数,插值问题又分为线性插值、多项式插值和样条插值等。 1.一维插值 如果被插值函数是一个单变量函数,则数据插值问题称为一维插值。一维插值采用的方法有线性方法、... -
Scipy三维和更高维插值
2020-04-23 23:26:31Scipy三维插值 插值运算在科学计算任务中非常常见,而scipy又是使用python进行科学计算任务的必备工具之一。关于如何使用scipy进行一位和二维插值官方文档介绍的已经非常详细,基本上根据demo操作就能搞清楚怎么使用... -
opencv中插值算法详解
2020-03-08 23:00:21如上图所示,左图是原图像矩阵,右图是扩大后的图像矩阵,右图中的橙色点表示的是矩阵扩大之后通过插值算法填充的像素值。所以,这篇文章我们主要探讨的就是如何来通过插值算法来填充像素值 相关函数介... -
多维区域中非线性偏微分方程的修正Laguerre谱与拟谱方法
2019-12-30 05:00:02多维区域中非线性偏微分方程的修正Laguerre谱与拟谱方法,徐承龙,郭本瑜,本文研究多维区域中非线性偏微分方程的谱与拟谱方法。我们建立了修正的Laguerre正交逼近与插值结果,这些结果对于建立和分析无界区� -
java 图形双线性插值实现伸缩
2009-01-08 11:25:31个人使用双线性性插值实现了图形的伸缩。输入参数为图形的像素矩阵 -
数学建模之插值与拟合(附实例及MATLAB源码)
2020-06-21 21:10:45MATLAB拟合和插值 写了整整一天,希望能给做建模的小伙伴一点帮助。 很用心,新手应该能看懂,其实理论知识也就那样,关键是自己动手实践,里面加了很多例题,希望小伙们们能看懂,我们建模国赛见???? -
高阶 numpy 数组快速插值(高阶快插)算法探讨
2019-07-05 13:36:28尽管 numpy 自身提供了 numpy.interp 插值函数,但只能做一维线性插值,因此,在实际工作中,我们更多地使用 scipy 的 interpolate 子模块。关于 numpy 和 scipy 的关系,有兴趣的话,可以参考拙作《数学建模三剑客... -
SciPyTutorial-多元插值griddata
2021-01-15 01:30:4511. Scipy Tutorial-多维插值griddatascipy.interpolate模块下的griddata函数可以处理多元(维)函数的插值,以二元函数$f(x, y)$为例说明一下griddata的使用。与之前的一元函数插值interp1d相区别,interp1d是通过... -
Matlab数据插值-内插、外插
2021-04-20 06:04:11插值就是已知一组离散的数据点集,在集合内部某两个点之间预测函数值的方法。一、一维插值插值运算是根据数据的分布规律,找到一个函数表达式可以连接已知的各点,并用此函数表达式预测两点之间任意位置上的函数值。... -
SciPy插值运算如何实现?
2020-12-24 19:05:36插值定义为在直线或曲线上的两个点之间找到一个值。单词的第一部分是” inter”, 意思是” enter”, 它指示我们查看数据内部。换句话说, “将精确数据点之间的中间值的估计称为内插”。插值在统计, SciPy和商业中, ... -
scipy--插值
2021-04-02 10:47:00目录1 scipy.interpolate2 一维插值2.1 内插值 interp1d()2.2 外插值3 二维插值2.1 interp2d() 1 scipy.interpolate scipy.interpolate是插值模块,插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的... -
b样条插值matlab代码-BasisMatrices.jl:构造不同类型基础矩阵的例程(Chebyshev多项式,B样条,分段线性,...
2021-05-21 01:28:03b样条插值matlab代码基础矩阵 该库的某些部分受到Paul Fackler和Mario Miranda的启发。 最初的Matlab代码是随出版物一起编写的 米兰达(Miranda),马里奥(Mario J.)和保罗·法克勒(Paul L.Fackler)。 应用计算... -
Mathematica三维点插值算法(高维插值,多维插值)
2012-03-22 19:23:00pts = {{0.`, -1.`, 0.`}, {-0.2411`, -0.94`, 0.2412`}, {-0.3831`, -0.842`, 0.3798`}, {-0.4355`, -0.715`, 0.547`}, {-0.5892`, -0.5859`, 0.5564`}} ...Graphics3D[{Red, PointSize[0.03], Poi...