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


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

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

用法:

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

檢查是否滿足非零重疊添加 (NOLA) 約束。

參數

window str 或 tuple 或 數組

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

nperseg int

每個段的長度。

noverlap int

段之間重疊的點數。

tol 浮點數,可選

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

返回

verdict bool

如果選擇的組合滿足 tol 內的 NOLA 約束,則為 True,否則為 False

注意

為了通過 istft 中的反 STFT 啟用 STFT 的反轉,信號窗口必須遵守 “nonzero overlap add” (NOLA) 的約束:

對所有人\(n\) ,其中\(w\) 是窗函數,\(t\) 是幀索引,並且\(H\) 是躍點大小(\(H\) =nperseg-重疊)。

這確保了overlap-add 反演方程的分母中的歸一化因子不為零。隻有非常病態的窗口才會使 NOLA 約束失效。

參考

[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

例子

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

“Symmetrical” Hann 窗口(用於濾波器設計)也是 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

相關用法


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