prev_fast_len#
- scipy.fft.prev_fast_len(цель, вещественный=False)#
Найти предыдущий быстрый размер входных данных для
fft. Полезно для отбрасывания минимального количества выборок перед БПФ.Алгоритмы БПФ SciPy достигают скорости благодаря рекурсивной стратегии "разделяй и властвуй". Это зависит от эффективных функций для малых простых множителей длины входных данных. Таким образом, преобразования быстрее всего при использовании составных чисел из простых множителей, обрабатываемых реализацией fft. Если есть эффективные функции для всех оснований <= n, тогда результатом будет число x <=
targetтолько с простыми множителями <= n. (Также известный как n-гладкие числа)- Параметры:
- Возвращает:
- выходint
Наибольшая быстрая длина, меньшая или равная
target.
Примечания
Результат этой функции может измениться в будущем из-за изменений в производительности, например, если будут добавлены новые простые множители.
Вызов
fftилиifftс вещественными входными данными выполняет'R2C'преобразование внутренне.В текущей реализации prev_fast_len предполагает основания 2,3,5,7,11 для комплексного БПФ и 2,3,5 для действительного БПФ.
Примеры
На конкретной машине БПФ простой длины занимает 16.2 мс:
>>> from scipy import fft >>> import numpy as np >>> rng = np.random.default_rng() >>> max_len = 93059 # prime length is worst case for speed >>> a = rng.standard_normal(max_len) >>> b = fft.fft(a)
Выполнение БПФ на максимальной быстрой длине, меньшей max_len, сокращает время вычисления до 1.5 мс, ускорение в 10.5 раз:
>>> fft.prev_fast_len(max_len, real=True) 92160 >>> c = fft.fft(a[:92160]) # discard last 899 samples