scipy.signal.

check_COLA#

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

检查是否符合常量重叠相加 (COLA) 约束。

参数:
window字符串或元组或 array_like

希望使用的窗口。如果 window 是字符串或元组,则会将其传递给 get_window 以生成窗口值,默认为 DFT 偶数。有关窗口和所需参数的列表,请参见 get_window 。如果 window 是 array_like,它将直接用作窗口,其长度必须是 nperseg。

npersegint

每个段的长度。

noverlapint

段之间重叠的点数。

tol浮点数,可选

一个箱加权和从箱中值和的允许的方差。

返回:
verdict布尔值

如果选定的组合在 tol 内满足 COLA,则值为 True,否则为 False

另请参阅

check_NOLA

检查满足零交叉重叠加 (NOLA) 约束

stft

短时傅里叶变换

istft

逆短时傅里叶变换

备注

为了能通过 istft 中的 inverse 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] 中可以找到非常全面的其他窗口列表,其中 COLA 条件在“幅度平坦度”为 1 时得到满足。

添加于版本 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,“通过离散傅里叶变换 (DFT) 进行频谱和频谱密度估计,包括窗口函数的完整列表和一些新的顶窗”,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

而对于 25%(1/4)的重叠,COLA 并不成立

>>> signal.check_COLA(signal.windows.boxcar(100), 100, 25)
False

“对称”Hann 窗口(用于滤波器设计)不是 COLA

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

对于 1/2、2/3、3/4 等重叠,“周期性”或“DFT 偶”Hann 窗口是 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