scipy.signal.

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