如何在python中将矢量上采样到一定长度

时间:2017-10-12 03:07:21

标签: python interpolation linear

给定一个向量,[1,2,3,4,5],例如,如何将带有线性插值的向量上采样到一定长度,例如python中的45。

2 个答案:

答案 0 :(得分:0)

如果它是线性的,则每个新元素之间应该有一个恒定的增加或减少。在你的情况下它是一个。因此,请对两个元素之间的差异进行抽样,然后将其添加到最后一个元素,无论多少次。

a = [1,2,3,4,5]
num_add = 45 -len(a)
b = a[1] - a[0]
for z in range(1,num_add):
    a.append(b + a[-1]) 

我认为这应该有效,尽管您可能需要使用该范围。

答案 1 :(得分:0)

好吧,我将您的[1, 2, 3, 4, 5]列表解释为一个例子。如果你想要一个实际插入你给它的系列的脚本,试试这个:

from scipy.optimize import curve_fit
import numpy as np


# Line equation - doesn't have to be linear
def lin_eq(x, m, b):

    return x*m + b

# Your actual data
std_y = np.array([1, 2, 3, 4, 5])

# Index of data
std_x = np.arange(1, len(std_y) + 1)

popt, pcov = curve_fit(lin_eq, std_x, std_y)

top = 45

# Index of projected data
proj_x = np.arange(1, top + 1)

# Interpolated data
proj_y = lin_eq(proj_x, *popt)

print proj_y

[  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  11.  12.  13.  14.  15.
  16.  17.  18.  19.  20.  21.  22.  23.  24.  25.  26.  27.  28.  29.  30.
  31.  32.  33.  34.  35.  36.  37.  38.  39.  40.  41.  42.  43.  44.  45.]