我想实现一个包络增强-即,给定一个由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之类的软件包可以方便地进行一些操作?非线性呢?
答案 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 ]