當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy signal.check_COLA用法及代碼示例

本文簡要介紹 python 語言中 scipy.signal.check_COLA 的用法。

用法:

scipy.signal.check_COLA(window, nperseg, noverlap, tol=1e-10)#

檢查是否滿足 Constant OverLap Add (COLA) 約束。

參數

window str 或 tuple 或 數組

想要使用的窗口。如果窗戶是一個字符串或元組,它被傳遞給scipy.signal.get_window生成窗口值,默認為DFT-even。看scipy.signal.get_window獲取窗口列表和所需參數。如果窗戶是數組,它將直接用作窗口,其長度必須為nperseg。

nperseg int

每個段的長度。

noverlap int

段之間重疊的點數。

tol 浮點數,可選

bin 的加權總和與中位數 bin 總和的允許方差。

返回

verdict bool

如果所選組合在 tol 內滿足 COLA,則為 True,否則為 False

注意

為了通過 istft 中的反 STFT 啟用 STFT 的反轉,信號窗口遵循 “Constant OverLap Add” (COLA) 的約束就足夠了。這確保了輸入數據中的每個點都具有相同的權重,從而避免了混疊並允許完全重建。

一些滿足 COLA 的窗口示例:

  • 0, 1/2, 2/3, 3/4, … 重疊的矩形窗口

  • Bartlett 窗口在 1/2、3/4、5/6、……的重疊處

  • 漢恩窗在 1/2、2/3、3/4、…

  • 任何 2/3 重疊的 Blackman 族窗口

  • 任何帶有noverlap = nperseg-1 的窗口

在 [2] 中可以找到非常全麵的其他窗口列表,其中當“Amplitude Flatness” 為單位時滿足 COLA 條件。

參考

[1]

Julius O. Smith III,“頻譜音頻信號處理”,W3K Publishing,2011,ISBN 978-0-9745607-3-1。

[2]

G. Heinzel、A. Ruediger 和 R. Schilling,“離散傅裏葉變換 (DFT) 的頻譜和頻譜密度估計,包括窗函數的綜合列表和一些新的 at-top 窗口”,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

“Symmetrical” Hann 窗口(用於濾波器設計)不是 COLA:

>>> signal.check_COLA(signal.windows.hann(120, sym=True), 120, 60)
False

“Periodic” 或 “DFT-even” Hann 窗口(用於 FFT 分析)是 COLA,用於 1/2、2/3、3/4 等的重疊:

>>> 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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.check_COLA。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。