当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy fft.next_fast_len用法及代码示例


本文简要介绍 python 语言中 scipy.fft.next_fast_len 的用法。

用法:

scipy.fft.next_fast_len()#

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

SciPy 的 FFT 算法通过递归分治策略来提高速度。这依赖于输入长度的小质因数的有效函数。因此,当使用由 fft 实现处理的质因数的复合时,变换速度最快。如果所有基都存在有效函数 <=n,那么结果将是一个数字x>=target只有质因数<n. (也称为n- 平滑的数字)

参数

target int

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

real 布尔型,可选

如果 FFT 涉及实际输入或输出,则为真(例如, rfft hfft 但不是 fft )。默认为假。

返回

out int

大于或等于 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 ms,加速了 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)

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.fft.next_fast_len。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。