check_NOLA#
- scipy.signal.check_NOLA(window, nperseg, noverlap, tol=1e-10)[source]#
檢查是否滿足非零重疊相加 (NOLA) 限制。
- 參數:
- windowstr 或 tuple 或 array_like
想要使用的視窗。如果 window 是字串或 tuple,則會將其傳遞給
get_window
以產生視窗值,預設為 DFT 偶數。請參閱get_window
以取得視窗和必要參數的清單。如果 window 是 array_like,它將直接用作視窗,且其長度必須為 nperseg。- npersegint
每個區段的長度。
- noverlapint
區段之間重疊的點數。
- tolfloat,選用
容許的 bin 加權總和與中位數 bin 總和之間的變異量。
- 回傳:
- verdictbool
如果選擇的組合在 tol 範圍內滿足 NOLA 限制,則為 True,否則為 False
參見
check_COLA
檢查是否滿足恆定重疊相加 (COLA) 限制
stft
短時傅立葉轉換
istft
反短時傅立葉轉換
註解
為了透過
istft
中的反 STFT 啟用 STFT 的反轉,訊號視窗化必須遵守「非零重疊相加」(NOLA) 的限制\[\sum_{t}w^{2}[n-tH] \ne 0\]對於所有 \(n\),其中 \(w\) 是視窗函數,\(t\) 是幀索引,而 \(H\) 是跳躍大小 (\(H\) = nperseg - noverlap)。
這確保了重疊相加反轉方程式分母中的正規化因子不會為零。只有非常病態的視窗才會不滿足 NOLA 限制。
在版本 1.2.0 中新增。
參考文獻
[1]Julius O. Smith III, “Spectral Audio Signal Processing”, W3K Publishing, 2011,ISBN 978-0-9745607-3-1.
[2]G. Heinzel, A. Ruediger and 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
範例
>>> import numpy as np >>> from scipy import signal
確認 75% (3/4) 重疊的矩形視窗的 NOLA 條件
>>> signal.check_NOLA(signal.windows.boxcar(100), 100, 75) True
NOLA 也適用於 25% (1/4) 重疊
>>> signal.check_NOLA(signal.windows.boxcar(100), 100, 25) True
「對稱」漢恩視窗 (用於濾波器設計) 也滿足 NOLA
>>> signal.check_NOLA(signal.windows.hann(120, sym=True), 120, 60) True
只要有重疊,就需要非常病態的視窗才會不滿足 NOLA
>>> w = np.ones(64, dtype="float") >>> w[::2] = 0 >>> signal.check_NOLA(w, 64, 32) False
如果重疊不足,末端為零的視窗將無法運作
>>> signal.check_NOLA(signal.windows.hann(64), 64, 0) False >>> signal.check_NOLA(signal.windows.hann(64), 64, 1) False >>> signal.check_NOLA(signal.windows.hann(64), 64, 2) True