当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy signal.check_COLA用法及代码示例


本文简要介绍 python 语言中 scipy.signal.check_COLA 的用法。

用法:

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

检查是否满足 Constant OverLap Add (COLA) 约束。

参数

window str 或 tuple 或 数组

想要使用的窗口。如果窗户是一个字符串或元组,它被传递给scipy.signal.get_window生成窗口值,默认为DFT-even。看scipy.signal.get_window获取窗口列表和所需参数。如果窗户是数组,它将直接用作窗口,其长度必须为nperseg。

nperseg int

每个段的长度。

noverlap int

段之间重叠的点数。

tol 浮点数,可选

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

返回

verdict bool

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

注意

为了通过 istft 中的反 STFT 启用 STFT 的反转,信号窗口遵循 “Constant OverLap Add” (COLA) 的约束就足够了。这确保了输入数据中的每个点都具有相同的权重,从而避免了混叠并允许完全重建。

一些满足 COLA 的窗口示例:

  • 0, 1/2, 2/3, 3/4, … 重叠的矩形窗口

  • Bartlett 窗口在 1/2、3/4、5/6、……的重叠处

  • 汉恩窗在 1/2、2/3、3/4、…

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

  • 任何带有noverlap = nperseg-1 的窗口

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

参考

[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

例子

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

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

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

“Periodic” 或 “DFT-even” Hann 窗口(用于 FFT 分析)是 COLA,用于 1/2、2/3、3/4 等的重叠:

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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.check_COLA。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。