check_COLA#
- scipy.signal.check_COLA(window, nperseg, noverlap, tol=1e-10)[原始碼]#
檢查是否滿足常數重疊相加 (COLA) 限制。
- 參數:
- windowstr 或 tuple 或 array_like
想要使用的視窗。如果 window 是字串或 tuple,它會被傳遞給
get_window
以產生視窗值,預設為 DFT-even。請參閱get_window
以取得視窗列表和所需參數。如果 window 是 array_like,它將直接用作視窗,且其長度必須為 nperseg。- npersegint
每個區段的長度。
- noverlapint
區段之間重疊的點數。
- tolfloat,選用
bin 的加權總和與中位數 bin 總和之間允許的變異數。
- 返回:
- verdictbool
如果選擇的組合在 tol 範圍內滿足 COLA,則為 True,否則為 False
另請參閱
check_NOLA
檢查是否滿足非零重疊相加 (NOLA) 限制
stft
短時傅立葉變換
istft
反短時傅立葉變換
註解
為了能夠透過
istft
中的反 STFT 反轉 STFT,訊號視窗化必須遵守「常數重疊相加」(COLA) 的限制。這確保輸入資料中的每個點都被同等加權,從而避免混疊並允許完全重建。- 一些滿足 COLA 的視窗範例
重疊 0、1/2、2/3、3/4、… 的矩形視窗
重疊 1/2、3/4、5/6、… 的 Bartlett 視窗
1/2、2/3、3/4、… 重疊的 Hann 視窗
任何 2/3 重疊的 Blackman 系列視窗
任何
noverlap = nperseg-1
的視窗
在 [2] 中可以找到其他視窗的完整列表,其中當「振幅平坦度」為 1 時,COLA 條件成立。
在 0.19.0 版本中新增。
參考文獻
[1]Julius O. Smith III, “Spectral Audio Signal Processing”, W3K Publishing, 2011, ISBN 978-0-9745607-3-1。
[2]G. Heinzel, A. Ruediger 和 R. Schilling, “Spectrum and spectral density estimation by the Discrete Fourier transform (DFT), including a comprehensive list of window functions and some new at-top windows”, 2002, http://hdl.handle.net/11858/00-001M-0000-0013-557A-5
範例
>>> from scipy import signal
確認重疊 75% (3/4) 矩形視窗的 COLA 條件
>>> signal.check_COLA(signal.windows.boxcar(100), 100, 75) True
COLA 對於 25% (1/4) 重疊不成立
>>> signal.check_COLA(signal.windows.boxcar(100), 100, 25) False
「對稱」Hann 視窗(用於濾波器設計)不符合 COLA
>>> signal.check_COLA(signal.windows.hann(120, sym=True), 120, 60) False
「週期性」或「DFT-even」Hann 視窗(用於 FFT 分析)對於 1/2、2/3、3/4 等重疊符合 COLA
>>> signal.check_COLA(signal.windows.hann(120, sym=False), 120, 60) True
>>> signal.check_COLA(signal.windows.hann(120, sym=False), 120, 80) True
>>> signal.check_COLA(signal.windows.hann(120, sym=False), 120, 90) True