scipy.fft.

next_fast_len#

scipy.fft.next_fast_len(target, real=False)#

尋找輸入到 fft 的下一個快速尺寸,用於零填充等。

SciPy 的 FFT 演算法透過遞迴分而治之策略來提高速度。這依賴於輸入長度的小質因數的有效函數。因此,當使用 fft 實作處理的質因數的組合時,轉換速度最快。如果所有基數 <= n 都有有效的函數,則結果將是一個數字 x >= target,且僅具有小於 n 的質因數。(也稱為 n-平滑數)

參數:
targetint

開始搜尋的長度。 必須為正整數。

realbool,選用

若為 True,則 FFT 涉及實數輸入或輸出(例如,rffthfft,但非 fft)。 預設為 False。

返回:
outint

大於或等於 target 的最小快速長度。

註解

此函數的結果將來可能會因效能考量而變更,例如,如果新增了新的質因數。

使用實數輸入資料呼叫 fftifft 會在內部執行 '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)