标签: extrapolation

随机散乱数据到三维均匀网格的插值和外推

我有一个256 x 256 x 32网格的规则间隔点,范围在x,y和z以及相关的变量"a".我还在一个更有限的x,y,z空间中有一组随机分散的点,并带有一个相关的变量"b".我本来想要做的是插入并将我的随机数据外推到与"a"立方体匹配的规则间隔网格,如下所示:

视觉表现.

到目前为止,我已经使用了scipy的griddata来实现插值,这似乎工作得很好,但它无法处理外推(据我所知)并且输出会急剧截断为'nan'值.在研究这个问题的同时,我遇到了一些人第二次使用griddata并使用'nearest'作为插值方法来填充'nan'值.我尝试了这个,但结果似乎不可靠.如果我使用具有"线性"模式的fill_Value,则会获得更合适的效果,但此时它更像是一个软糖,因为fill_Value必须是常量.

我注意到MATLAB有一个ScatteredInterpolant类似乎可以做我想要的,但我无法在Python中找到一个等效的类,也没有弄清楚如何在3D中有效地实现这样的例程.任何帮助是极大的赞赏.

我用于插值的代码如下:

x, y, z, b = np.loadtxt(scatteredfile, unpack = True)

# Create cube to match aCube dimensions
xi = np.linspace(-xmax_aCube, xmax_aCube, 256)
yi = np.linspace(-ymax_aCube, ymax_aCube, 256)
zi = np.linspace(zmin_aCube, zmax_aCube, 32)

# Interpolate scattered points
X, Y, Z = np.meshgrid(xi, yi, zi)
bCube = griddata((x, y, z), b, (X, Y, Z), method = 'linear')    
Run Code Online (Sandbox Code Playgroud)

python interpolation scipy extrapolation

11
推荐指数
1
解决办法
3973
查看次数

如何进行线性回归,将误码率考虑在内?

我正在为一些有限大小的物理系统进行计算机模拟,之后我正在对无穷大进行外推(热力学极限).一些理论认为数据应该随着系统规模线性扩展,所以我做的是线性回归.

我的数据有噪音,但对于每个数据点,我可以估算出错误.因此,例如数据点看起来像:

x_list = [0.3333333333333333, 0.2886751345948129, 0.25, 0.23570226039551587, 0.22360679774997896, 0.20412414523193154, 0.2, 0.16666666666666666]
y_list = [0.13250359351851854, 0.12098339583333334, 0.12398501145833334, 0.09152715, 0.11167239583333334, 0.10876248333333333, 0.09814170444444444, 0.08560799305555555]
y_err = [0.003306749165349316, 0.003818446389148108, 0.0056036878203831785, 0.0036635292592592595, 0.0037034897788415424, 0.007576672222222223, 0.002981084130692832, 0.0034913019065973983]
Run Code Online (Sandbox Code Playgroud)

假设我试图在Python中执行此操作.

  1. 我知道的第一种方式是:

    m, c, r_value, p_value, std_err = scipy.stats.linregress(x_list, y_list)
    
    Run Code Online (Sandbox Code Playgroud)

    我理解这给了我结果的错误栏,但这没有考虑初始数据的错误栏.

  2. 我知道的第二种方式是:

    m, c = numpy.polynomial.polynomial.polyfit(x_list, y_list, 1, w = [1.0 / ty for ty in y_err], full=False)
    
    Run Code Online (Sandbox Code Playgroud)

这里我们使用每个点的误差条的倒数作为在最小二乘近似中使用的权重.因此,如果一个点不是那么可靠,那么它不会对结果造成太大影响,这是合理的.

但我无法弄清楚如何获得结合这两种方法的东西.

我真正想要的是第二种方法的作用,意思是当每个点都影响不同权重的结果时使用回归.但与此同时,我想知道我的结果有多准确,这意味着,我想知道结果系数的误码是什么.

我怎样才能做到这一点?

python numpy linear-regression least-squares extrapolation

10
推荐指数
1
解决办法
1万
查看次数

在Pandas DataFrame中推断值

在Pandas DataFrame中插入NaN单元非常容易:

In [98]: df
Out[98]:
            neg       neu       pos       avg
250    0.508475  0.527027  0.641292  0.558931
500         NaN       NaN       NaN       NaN
1000   0.650000  0.571429  0.653983  0.625137
2000        NaN       NaN       NaN       NaN
3000   0.619718  0.663158  0.665468  0.649448
4000        NaN       NaN       NaN       NaN
6000        NaN       NaN       NaN       NaN
8000        NaN       NaN       NaN       NaN
10000       NaN       NaN       NaN       NaN
20000       NaN       NaN       NaN       NaN
30000       NaN       NaN       NaN       NaN
50000       NaN       NaN       NaN       NaN

[12 rows x 4 columns]

In [99]: df.interpolate(method='nearest', axis=0)
Out[99]: …
Run Code Online (Sandbox Code Playgroud)

python pandas extrapolation

9
推荐指数
2
解决办法
1万
查看次数

从三角测量推断

假设我们有五个顶点:

X = [0 1;
     2 1;
     4 1;
     1 0;
     3 0];
Run Code Online (Sandbox Code Playgroud)

三角测量:

T = [1 4 2;
     4 5 2;
     5 3 2];
Run Code Online (Sandbox Code Playgroud)

和顶点上定义的函数值:

Fx = [1;
      2;
      3;
      4;
     -5];
Run Code Online (Sandbox Code Playgroud)

然后我们可以通过使用重心坐标轻松计算三角形内任何点的函数值.对于P = [1 .5]位于第一个三角形中的点,重心坐标为B = [.25 .5 .25],因此函数的计算结果为Fxi = 1/4 + 4/2 + 2/4 = 2.75.

但是,我很难看出如何推断这个表面.我们可以找到最接近的三角形并从中推断出来.问题是这会导致不连续的功能.考虑例如点P = [2 2].根据三角形1,其值为-0.5,而根据三角形3,其值为9.5.

是否有"标准"或普遍接受的方法从分段线性函数中推断出来?任何指向现有材料的指针也非常赞赏.

triangulation piecewise extrapolation

8
推荐指数
1
解决办法
540
查看次数

如何使用 OpenCV 进行平滑的帧插值和外插?

我的源数据文件是每 15 分钟捕获一次的天气雷达图像。我正在尝试对中间帧进行平滑插值,并尝试从上次测量开始推断运动。

到目前为止,我的方法是从两个连续图像计算密集光流场(cv2.calcOpticalFlowFarneback),然后使用光流和第一张图像插入(cv2.remap)帧。我还使用相同的方法进行了虚拟运动外推。

示例视频中,您可以看到这种方法的注意事项,在插值期间,插值帧和测量帧之间存在明显的中断,并且在外插部分(从 8 秒开始)完全迷幻。我尝试平滑光学流场和它有一个小的影响,但结果基本保持不变。

我想对接下来要研究的方法有一些指导,并且是否有针对此类问题的任何opencv特定解决方案。

问题一:如何让插值更流畅?问题二:运动时间外推的正确方法是什么?

python opencv opticalflow spatial-interpolation extrapolation

7
推荐指数
0
解决办法
2614
查看次数

在R中拟合样条函数以插入每月值的每日值

采用看起来像这样的数据框,包含2005年某些日期的数据和每个日期的测量数据.

df <- data.frame("date" = c('2005-04-04','2005-04-19', '2005-04-26', '2005-05-05', 
'2005-05-12', '2005-05-25', '2005-06-02', '2005-06-16', '2005-07-07', '2005-07-14', 
'2005-07-21', '2005-08-04'), "numbers" = c(90,50,50,48,44,37,34,30,36,31,49,54))
Run Code Online (Sandbox Code Playgroud)

我希望在一年中的每一天基于此创建1:365的值序列,主要是为了创建一个新的数据框,从2005年1月1日到2005年12月31日,其中已经填充了来自a的值.样条函数拟合这些现有的12个值.

当我尝试使用以下方法时:

numbers <- df$numbers
x = spline(1:365, numbers)
Run Code Online (Sandbox Code Playgroud)

我明白了

xy.coords中的错误(x,y,setLab = FALSE):'x'和'y'长度不同'

我不确定出了什么问题.

interpolation r spline extrapolation

7
推荐指数
1
解决办法
458
查看次数

在Python中使用'nearest'方法进行外部开发

我想找到以下Matlab语句的Python等价物:

vq interp1(x,y, xq,'nearest','extrap')
Run Code Online (Sandbox Code Playgroud)

它看起来好像interp(xq, x, y)适用于线性插值/外推.

我也看了看

F = scipy.interpolate.interp1d(x, y, kind='nearest')
Run Code Online (Sandbox Code Playgroud)

它适用于最近的方法,但不会执行外推.

还有什么我忽略的吗?谢谢.

python scipy extrapolation

6
推荐指数
1
解决办法
1920
查看次数

如何在Python中推断曲线?

我有一些数据如下图所示,

在此输入图像描述

我能够插入数据点(虚线),并期待在两个方向上推断它们.

如何使用NumPy/SciPy在Python中推断这些曲线?

我用于插值的代码如下,

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate

x = np.array([[0.12, 0.11, 0.1, 0.09, 0.08],
              [0.13, 0.12, 0.11, 0.1, 0.09],
              [0.15, 0.14, 0.12, 0.11, 0.1],
              [0.17, 0.15, 0.14, 0.12, 0.11],
              [0.19, 0.17, 0.16, 0.14, 0.12],
              [0.22, 0.19, 0.17, 0.15, 0.13],
              [0.24, 0.22, 0.19, 0.16, 0.14],
              [0.27, 0.24, 0.21, 0.18, 0.15],
              [0.29, 0.26, 0.22, 0.19, 0.16]])


y = np.array([[71.64, 78.52, 84.91, 89.35, 97.58],
              [66.28, 73.67, 79.87, 85.36, 93.24],
              [61.48, 69.31, 75.36, 81.87, 89.35], …
Run Code Online (Sandbox Code Playgroud)

python numpy graph scipy extrapolation

6
推荐指数
1
解决办法
7372
查看次数

推断Pandas DataFrame

Pandas.DataFrame使用中插入值很容易Series.interpolate,如何进行外推?

例如,给定一个DataFrame如图所示,我们怎样才能将它推断14个月到2014-12-31?线性外推很好.

X1 = range(10)
X2 = map(lambda x: x**2, X1)
df = pd.DataFrame({'x1': X1, 'x2': X2},  index=pd.date_range('20130101',periods=10,freq='M'))
Run Code Online (Sandbox Code Playgroud)

我认为必须首先创建一个新的DataFrame,DateTimeIndex从2013-11-31开始并延长14个M周期.除此之外,我被困住了.

在此输入图像描述

python python-2.7 pandas extrapolation

6
推荐指数
1
解决办法
4308
查看次数

Python-Predicting /在给定数据集的情况下推断未来数据

我是Python的新手.我有一个数据集,我正在尝试使用numPy/sciPy来预测/推断未来的数据点.是否有一种简单的方法来提出适合我当前数据的数学函数(比如,正弦函数),然后我可以将新值传递给该函数以获得我的预测?

这就是我所拥有的,但我不认为它正在做我想要的:

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt

def main():

    y = [8.3, 8.3, 8.3, 8.3, 7.2, 7.8, 7.8, 8.3, 9.4, 10.6, 10.0, 10.6, 11.1, 12.8,
         12.8, 12.8, 11.7, 10.6, 10.6, 10.0, 10.0, 8.9, 8.9, 8.3, 7.2, 6.7, 6.7, 6.7,
         7.2, 8.3, 7.2, 10.6, 11.1, 11.7, 12.8, 13.3, 15.0, 15.6, 13.3, 15.0, 13.3,
         11.7, 11.1, 10.0, 10.6, 9.4, 8.9, 8.3, 8.9, 6.7, 6.7, 6.0, 6.1, 8.3, 8.3,
         10.6, 11.1, 11.1, 11.7, 12.2, 13.3, 14.4, …
Run Code Online (Sandbox Code Playgroud)

python prediction extrapolation

5
推荐指数
1
解决办法
1970
查看次数