scipy.fft.
prev_fast_len#
- scipy.fft.prev_fast_len(target, real=False)#
尋找
fft
輸入資料的前一個快速尺寸。適用於在 FFT 之前捨棄最少數量的樣本。SciPy 的 FFT 演算法透過遞迴分而治之策略來提升速度。這依賴於輸入長度的小質因數的有效函數。因此,當使用 fft 實作處理的質因數的組合時,轉換速度最快。如果所有基數 <= n 都有有效的函數,則結果將是一個數字 x <=
target
,且僅具有 <= n 的質因數。(也稱為 n-smooth 數字)- 參數:
- 返回:
- outint
小於或等於
target
的最大快速長度。
註解
此函數的結果在未來可能會因效能考量而改變,例如,如果新增了新的質因數。
使用實數輸入資料呼叫
fft
或ifft
會在內部執行'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