包络增强功能

时间:2020-06-14 03:27:24

标签: python numpy

我想实现一个包络增强-即,给定一个由y坐标数组定义的线性包络,通过在同一包络上采样更多点来获得更长的数组。

所以说我有一个[0, 0.6, 0.3, 0.4]的包络,如果它(线性地)增加以得到长度为10的数组,它将是[0, 0.2, 0.4, 0.6, 0.5, 0.4, 0.3, 0.333, 0.367, 0.4]。通过numpy之类的软件包可以方便地进行一些操作?非线性呢?

2 个答案:

答案 0 :(得分:1)

您尝试过吗:

import numpy as np
n = 3 #number of samples
x = [0, 0.6, 0.3, 0.4]
a = [np.linspace(i,j,n, endpoint=False) for i,j in zip(x[:-1], x[1:])]
a = np.array(a)
a  = a.flatten()
a = np.append(a, x[-1])
print(a)

答案 1 :(得分:1)

您可以使用numpy.interp 为此,这也适用于您的尺寸与n = 9不太匹配的情况。

import numpy as np
n = 10
a = [0, 0.6, 0.3, 0.4]
indices = np.linspace(0, n - 1, len(a), dtype=int)
print(indices)
# [0 3 6 9]
print(np.interp(range(n), indices, a))
# [0.         0.2        0.4        0.6        0.5        0.4
#  0.3        0.33333333 0.36666667 0.4       ]
相关问题