scipy.signal.

check_COLA#

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

检查是否满足恒定重叠相加 (COLA) 约束。

参数:
windowstr 或 tuple 或 array_like

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

npersegint

每个段的长度。

noverlapint

段之间重叠的点数。

tolfloat, 可选

允许的箱的加权和与中值箱和的方差。

返回:
verdictbool

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

另请参阅

check_NOLA

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

stft

短时傅里叶变换

istft

逆短时傅里叶变换

注释

为了能够通过 istft 中的逆 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] 中找到,其中当“幅度平坦度”为 1 时,满足 COLA 条件。

在 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) 进行频谱和频谱密度估计,包括窗口函数的综合列表和一些新的 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

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

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

“周期性”或“DFT 偶数”的 Hann 窗口(用于 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