scipy.fft.
next_fast_len#
- scipy.fft.next_fast_len(target, real=False)[源代码]#
找到输入数据的下一个快速大小以进行
fft
,用于零填充等。SciPy 的 FFT 算法通过递归分治策略获得其速度。这依赖于对输入长度的小素因数的有效函数。因此,当使用由 fft 实现处理的素因数的复合数时,变换速度最快。如果对所有基数 <= n 都有有效函数,那么结果将是一个仅包含小于 n 的素因数的数 x >=
target
。(也称为 n-光滑数)- 参数:
- 返回:
- 出整数
大于或等于
target
的最小快速长度。
注释
此函数的结果可能会在未来随着性能考虑的变化而改变,例如,如果添加了新的质因数。
使用
fft
或ifft
处理实数输入数据时,内部执行的是'R2C'
变换。示例
在一台特定的机器上,一个长度为质数的FFT需要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)
向上舍入到下一个2的幂不是最优的,计算时间为3.0毫秒;比``next_fast_len``给出的尺寸长1.9倍:
>>> b = fft.fft(a, 131072)