check_NOLA#
- scipy.signal.check_NOLA(window, nperseg, noverlap, tol=1e-10)[Quelle]#
Prüft, ob die Nonzero Overlap Add (NOLA) Bedingung erfüllt ist.
- Parameter:
- windowstr oder Tupel oder Array-ähnlich
Das gewünschte Fenster. Wenn window ein String oder Tupel ist, wird es an
get_windowübergeben, um die Fensterwerte zu erzeugen, die standardmäßig DFT-symmetrisch sind. Sieheget_windowfür eine Liste von Fenstern und erforderliche Parameter. Wenn window Array-ähnlich ist, wird es direkt als Fenster verwendet und seine Länge mussnpersegentsprechen.- npersegint
Länge jedes Segments.
- noverlapint
Anzahl der Punkte, die zwischen den Segmenten überlappen.
- tolfloat, optional
Die zulässige Abweichung der gewichteten Summe eines Bins vom Median-Bin-Summe.
- Rückgabe:
- verdictbool
True, wenn die gewählte Kombination die NOLA-Bedingung innerhalb von tol erfüllt, False andernfalls.
Siehe auch
check_COLAPrüft, ob die Constant OverLap Add (COLA) Bedingung erfüllt ist.
stftKurzzeit-Fourier-Transformation
istftInverse Kurzzeit-Fourier-Transformation
Hinweise
Damit die Inversion einer STFT über die inverse STFT in
istftmöglich ist, muss die Signal-Fensterung der Bedingung „nonzero overlap add“ (NOLA) gehorchen.\[\sum_{t}w^{2}[n-tH] \ne 0\]für alle \(n\), wobei \(w\) die Fensterfunktion, \(t\) der Rahmenindex und \(H\) die Schrittweite (\(H\) = nperseg - noverlap) ist.
Dies stellt sicher, dass die Normierungsfaktoren im Nenner der Overlap-Add-Inversionsgleichung nicht Null sind. Nur sehr pathologische Fenster werden die NOLA-Bedingung nicht erfüllen.
Hinzugefügt in Version 1.2.0.
Referenzen
[1]Julius O. Smith III, „Spectral Audio Signal Processing“, W3K Publishing, 2011, ISBN 978-0-9745607-3-1.
[2]G. Heinzel, A. Ruediger und 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
Beispiele
>>> import numpy as np >>> from scipy import signal
NOLA-Bedingung für rechteckiges Fenster mit 75 % (3/4) Überlappung bestätigen.
>>> signal.check_NOLA(signal.windows.boxcar(100), 100, 75) True
NOLA gilt auch für 25 % (1/4) Überlappung.
>>> signal.check_NOLA(signal.windows.boxcar(100), 100, 25) True
Das „symmetrische“ Hann-Fenster (für Filterdesign) ist ebenfalls NOLA-konform.
>>> signal.check_NOLA(signal.windows.hann(120, sym=True), 120, 60) True
Solange es eine Überlappung gibt, ist ein sehr pathologisches Fenster erforderlich, um NOLA zu verletzen.
>>> w = np.ones(64, dtype="float") >>> w[::2] = 0 >>> signal.check_NOLA(w, 64, 32) False
Wenn nicht genügend Überlappung vorhanden ist, funktioniert ein Fenster mit Nullen an den Enden nicht.
>>> 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