【发布时间】:2019-02-19 13:10:53
【问题描述】:
根据scipy.signal.resample的文档,速度应该根据输入的长度而有所不同:
如前所述,重采样使用 FFT 变换,如果输入样本的数量很大且是素数,这可能会非常慢,请参阅 scipy.fftpack.fft。
但是我有非常不同的时序(因子 x14)使用相同的输入,并且所需的输出大小只有很小的变化:
import numpy as np, time
from scipy.signal import resample
x = np.random.rand(262144, 2)
y = np.random.rand(262144, 2)
t0 = time.time()
resample(x, 233543, axis=0)
print time.time() - t0 # 2.9 seconds here
t0 = time.time()
resample(y, 220435, axis=0)
print time.time() - t0 # 40.9 seconds here!
问题:我可以对输入进行零填充,使其具有 2 的幂(以加快 FFT 计算,像往常一样),但由于我的重采样因子是固定的,我不能同时拥有 2 的幂输入大小和所需输出大小的 2 的幂。
如何加速scipy.signal.resample?
如果不可能,并且如果scipy.signal.resample 的性能会因很大的因素而变化如此大,那么它对于实际使用来说真的不方便。那么它对哪个应用程序有用呢?
注意:我的目标是音频重采样(重调等)
编辑:最好的解决方案终于是to use this。
【问题讨论】:
-
使用在空间域内插值的重采样函数。
标签: python numpy scipy fft resampling