Согласно документации scipy.signal.resample
, скорость должна варьироваться в зависимости от длины ввода :
Как уже отмечалось, для повторной выборки используется БПФпреобразования, которые могут быть очень медленными, если число входных выборок велико и простое, см. 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
может сильно измениться с большим коэффициентом, то это действительно не пригодится на самом делеиспользовать.Тогда для какого приложения это полезно?
Примечание: моя цель - ресэмплирование звука (повторное воспроизведение и т. Д.)
Редактировать: наконец-то лучше всего использовать , чтобы использовать .