check_NOLA#
- scipy.signal.check_NOLA(window, nperseg, noverlap, tol=1e-10)[source]#
- Check whether the Nonzero Overlap Add (NOLA) constraint is met. - Parameters:
- windowstr or tuple or array_like
- Desired window to use. If window is a string or tuple, it is passed to - get_windowto generate the window values, which are DFT-even by default. See- get_windowfor a list of windows and required parameters. If window is array_like it will be used directly as the window and its length must be nperseg.
- npersegint
- Length of each segment. 
- noverlapint
- Number of points to overlap between segments. 
- tolfloat, optional
- The allowed variance of a bin’s weighted sum from the median bin sum. 
 
- Returns:
- verdictbool
- True if chosen combination satisfies the NOLA constraint within tol, False otherwise 
 
 - See also - check_COLA
- Check whether the Constant OverLap Add (COLA) constraint is met 
- stft
- Short Time Fourier Transform 
- istft
- Inverse Short Time Fourier Transform 
 - Notes - In order to enable inversion of an STFT via the inverse STFT in - istft, the signal windowing must obey the constraint of “nonzero overlap add” (NOLA):\[\sum_{t}w^{2}[n-tH] \ne 0\]- for all \(n\), where \(w\) is the window function, \(t\) is the frame index, and \(H\) is the hop size (\(H\) = nperseg - noverlap). - This ensures that the normalization factors in the denominator of the overlap-add inversion equation are not zero. Only very pathological windows will fail the NOLA constraint. - Added in version 1.2.0. - References [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 - Examples - >>> import numpy as np >>> from scipy import signal - Confirm NOLA condition for rectangular window of 75% (3/4) overlap: - >>> signal.check_NOLA(signal.windows.boxcar(100), 100, 75) True - NOLA is also true for 25% (1/4) overlap: - >>> signal.check_NOLA(signal.windows.boxcar(100), 100, 25) True - “Symmetrical” Hann window (for filter design) is also NOLA: - >>> signal.check_NOLA(signal.windows.hann(120, sym=True), 120, 60) True - As long as there is overlap, it takes quite a pathological window to fail NOLA: - >>> w = np.ones(64, dtype="float") >>> w[::2] = 0 >>> signal.check_NOLA(w, 64, 32) False - If there is not enough overlap, a window with zeros at the ends will not work: - >>> 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