scipy.fft.
next_fast_len#
- scipy.fft.next_fast_len(target, real=False)#
为零填充等找到输入数据到
fft的下一个快速大小。SciPy 的 FFT 算法通过递归的分治策略获得其速度。这依赖于输入长度的小质因数的有效函数。因此,当使用 FFT 实现处理的质因数的组合时,变换速度最快。如果对于所有小于等于 n 的基数都有有效的函数,那么结果将是一个大于或等于
target且只有小于 n 的质因数的数字。(也称为 n-平滑数)- 参数:
- 返回:
- outint
大于或等于
target的最小快速长度。
附注
此函数的结果可能会在未来发生变化,因为性能考虑因素会发生变化,例如,如果添加了新的质因数。
使用实数输入数据调用
fft或ifft会在内部执行'R2C'变换。数组 API 标准支持
next_fast_len不适用于对 NumPy 以外的 Python Array API 标准兼容后端的支持。有关更多信息,请参阅 对数组 API 标准的支持。
示例
在特定机器上,对质数长度的 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)