scipy.fft.
next_fast_len#
- scipy.fft.next_fast_len(target, real=False)#
尋找輸入到
fft
的下一個快速尺寸,用於零填充等。SciPy 的 FFT 演算法透過遞迴分而治之策略來提高速度。這依賴於輸入長度的小質因數的有效函數。因此,當使用 fft 實作處理的質因數的組合時,轉換速度最快。如果所有基數 <= n 都有有效的函數,則結果將是一個數字 x >=
target
,且僅具有小於 n 的質因數。(也稱為 n-平滑數)- 參數:
- 返回:
- outint
大於或等於
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 毫秒,加速了 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)