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


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


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

用法:

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

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

参数

window str 或 tuple 或 数组

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

nperseg int

每个段的长度。

noverlap int

段之间重叠的点数。

tol 浮点数,可选

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

返回

verdict bool

如果选择的组合满足 tol 内的 NOLA 约束,则为 True,否则为 False

注意

为了通过 istft 中的反 STFT 启用 STFT 的反转,信号窗口必须遵守 “nonzero overlap add” (NOLA) 的约束:

对所有人\(n\) ,其中\(w\) 是窗函数,\(t\) 是帧索引,并且\(H\) 是跃点大小(\(H\) =nperseg-重叠)。

这确保了overlap-add 反演方程的分母中的归一化因子不为零。只有非常病态的窗口才会使 NOLA 约束失效。

参考

[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

例子

>>> import numpy as np
>>> 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

“Symmetrical” Hann 窗口(用于滤波器设计)也是 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

相关用法


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