next_fast_len#
- scipy.fft.next_fast_len(цель, вещественный=False)#
Найти следующий быстрый размер входных данных для
fft, для дополнения нулями и т.д.Алгоритмы БПФ SciPy достигают скорости благодаря рекурсивной стратегии "разделяй и властвуй". Это зависит от эффективных функций для малых простых множителей длины входных данных. Таким образом, преобразования быстрее всего при использовании составных чисел из простых множителей, обрабатываемых реализацией fft. Если есть эффективные функции для всех оснований <= n, тогда результатом будет число x >=
targetтолько с простыми множителями < n. (Также известный как n-гладкие числа)- Параметры:
- Возвращает:
- выходint
Наименьшая быстрая длина, большая или равная
target.
Примечания
Результат этой функции может измениться в будущем из-за изменений в производительности, например, если будут добавлены новые простые множители.
Вызов
fftилиifftс вещественными входными данными выполняет'R2C'преобразование внутренне.Примеры
На конкретной машине БПФ простой длины занимает 11.4 мс:
>>> from scipy import fft >>> import numpy as np >>> rng = np.random.default_rng() >>> min_len = 93059 # prime length is worst case for speed >>> a = rng.standard_normal(min_len) >>> b = fft.fft(a)
Дополнение нулями до следующей регулярной длины сокращает время вычисления до 1.6 мс, ускорение в 7.3 раза:
>>> fft.next_fast_len(min_len, real=True) 93312 >>> b = fft.fft(a, 93312)
Округление до следующей степени двойки не оптимально, занимает 3.0 мс для вычисления; в 1.9 раза дольше, чем размер, заданный
next_fast_len:>>> b = fft.fft(a, 131072)