當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。