scipy.fft.
next_fast_len#
- scipy.fft.next_fast_len(target, real=False)#
找到输入数据到
fft
的下一个快速大小,用于零填充等。SciPy 的 FFT 算法通过递归分治策略获得速度。这依赖于对输入长度的小素因子的高效函数。因此,当使用 fft 实现处理的素因子的复合时,变换最快。如果存在对所有基数 <= n 的高效函数,则结果将是一个数字 x >=
target
,它只有素因子 < n。(也称为 n-光滑数)- 参数:
- 返回值:
- outint
大于或等于
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)