scipy.fftpack.

next_fast_len#

scipy.fftpack.next_fast_len(target)[source]#

找到输入数据到 fft 的下一个快速尺寸,用于零填充等。

SciPy 的 FFTPACK 针对基数 {2, 3, 4, 5} 具有高效的函数,因此返回第一个大于或等于 target 的 2、3 和 5 的合成数。(这些数也被称为 5 光滑数、规则数或汉明数。)

参数:
targetint

要开始搜索的长度。必须是正整数。

返回值:
outint

第一个大于或等于 target 的 5 光滑数。

备注

在 0.18.0 版本中添加。

示例

在特定机器上,素数长度的 FFT 需要 133 毫秒

>>> from scipy import fftpack
>>> import numpy as np
>>> rng = np.random.default_rng()
>>> min_len = 10007  # prime length is worst case for speed
>>> a = rng.standard_normal(min_len)
>>> b = fftpack.fft(a)

零填充到下一个 5 光滑长度将计算时间缩短到 211 微秒,加速了 630 倍

>>> fftpack.next_fast_len(min_len)
10125
>>> b = fftpack.fft(a, 10125)

四舍五入到下一个 2 的幂不是最优的,计算时间为 367 微秒,是 5 光滑尺寸的 1.7 倍

>>> b = fftpack.fft(a, 16384)