scipy.fft.next_fast_len

scipy.fft.next_fast_len()[源代码]

查找输入数据的下一个快速大小 fft 、用于补零等。

SciPy的FFT算法通过递归的分而治之策略获得速度。这依赖于输入长度的小素数因子的有效函数。因此,当使用由FFT实现处理的主因数组合时,转换速度最快。如果对所有的根都有有效函数<= n ,则结果将是一个数字 x >= target 只有素数因子< n 。(也称为 n -平滑数)

参数
target集成

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

real布尔值,可选

如果FFT涉及实数输入或输出(例如, rffthfft 但不是 fft )。默认为False。

退货
out集成

大于或等于的最小快速长度 target

注意事项

此函数的结果将来可能会随着性能考虑因素的更改而更改,例如,如果添加了新的素因数。

呼叫 fftifft 使用真实输入数据执行 'R2C' 内部转换。

示例

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

>>> from scipy import fft
>>> 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)

四舍五入到2的下一个幂不是最优的,计算需要3.0毫秒;比给出的大小长1.9倍 next_fast_len

>>> b = fft.fft(a, 131072)