scipy.signal.

check_COLA#

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

检查是否满足常数重叠加法(COLA)约束。

参数:
窗口str 或 tuple 或 array_like

要使用的期望窗口。如果 window 是一个字符串或元组,它会被传递给 get_window 以生成窗口值,这些值默认是 DFT-even 的。请参阅 get_window 以获取窗口列表和所需参数。如果 window 是类数组,它将直接用作窗口,并且其长度必须为 nperseg。

nperseg整数

每个段落的长度。

noverlap整数

段落之间重叠的点数。

tolfloat, 可选

一个箱子的加权和与中位数箱子和之间的允许偏差。

返回:
裁决布尔

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

参见

check_NOLA

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

stft

短时傅里叶变换

istft

逆短时傅里叶变换

注释

为了通过 istft 中的逆 STFT 实现 STFT 的逆变换,信号加窗只需满足“常数重叠相加”(COLA)的约束条件即可。这确保了输入数据中的每个点都被均匀加权,从而避免了混叠并允许完全重建。

满足 COLA 的一些窗口示例:
  • 矩形窗口在重叠为 0, 1/2, 2/3, 3/4, … 时

  • Bartlett 窗口在重叠为 1/2, 3/4, 5/6, … 时

  • Hann 窗口在 1/2, 2/3, 3/4, …

  • 任何重叠为2/3的Blackman家族窗口

  • 任何窗口的 noverlap = nperseg-1

[2] 中可以找到其他窗口的非常全面的列表,其中当“幅度平坦度”为单位时,满足 COLA 条件。

Added in version 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 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

示例

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

“对称”汉恩窗(用于滤波器设计)不是COLA:

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

“周期性”或“DFT-even”汉恩窗(用于FFT分析)对于1/2、2/3、3/4等的重叠是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