scipy.signal.check_NOLA

scipy.signal.check_NOLA(window, nperseg, noverlap, tol=1e-10)[源代码]

检查是否满足非零重叠添加(NOLA)约束。

参数
window字符串、元组或类似数组

要使用的所需窗口。如果 window 是字符串或元组,则将其传递给 get_window 以生成窗口值,该窗口值是DFT-即使在默认情况下也是如此。看见 get_window 有关窗口和所需参数的列表,请执行以下操作。如果 window is array_like它将直接用作窗口,其长度必须为nperseg。

nperseg集成

每个线段的长度。

noverlap集成

线段之间要重叠的点数。

tol浮动,可选

仓位加权总和与仓位中位数总和的允许方差。

退货
verdict布尔尔

True 如果选择的组合满足以下范围内的NOLA约束 tolFalse 否则

参见

check_COLA

检查是否满足常量重叠添加(Cola)约束

stft

短时傅里叶变换

istft

短时傅里叶逆变换

注意事项

为了能够通过中的逆STFT实现STFT的反转 istft 信号加窗必须遵守“非零重叠相加”(NOLA)的约束:

\[\sum_{t}w^{2} [n-tH] \ne%0\]

为了所有人 \(n\) ,在哪里 \(w\) 是窗口函数, \(t\) 是帧索引,并且 \(H\) 是跳数大小 (\(H\) = nperseg - noverlap )。

这确保了重叠相加反演方程的分母中的归一化因子不为零。只有非常病态的窗口才会不符合NOLA约束。

1.2.0 新版功能.

参考文献

1

朱利叶斯·O·史密斯三,“频谱音频信号处理”,W3K出版社,2011年,ISBN978-0-9745607-3-1。

2

G.Heinzel,A.Ruediger和R.Schilling,“通过离散傅立叶变换估计频谱和频谱密度,包括窗口函数的综合列表和一些新的顶部窗口”,2002年,http://hdl.handle.net/11858/00-001M-0000-0013-557A-5

示例

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