scipy.fft.

prev_fast_len#

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

尋找 fft 輸入資料的前一個快速尺寸。適用於在 FFT 之前捨棄最少數量的樣本。

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

參數:
targetint

搜尋的最大長度,必須為正整數。

realbool,選用

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

返回:
outint

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

註解

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

使用實數輸入資料呼叫 fftifft 會在內部執行 'R2C' 轉換。

在目前的實作中,prev_fast_len 假設複數 FFT 的基數為 2、3、5、7、11,而實數 FFT 的基數為 2、3、5。

範例

在特定的機器上,質數長度的 FFT 耗時 16.2 毫秒

>>> from scipy import fft
>>> import numpy as np
>>> rng = np.random.default_rng()
>>> max_len = 93059  # prime length is worst case for speed
>>> a = rng.standard_normal(max_len)
>>> b = fft.fft(a)

對小於 max_len 的最大快速長度執行 FFT,可將計算時間縮短至 1.5 毫秒,加速了 10.5 倍

>>> fft.prev_fast_len(max_len, real=True)
92160
>>> c = fft.fft(a[:92160]) # discard last 899 samples