scipy.signal.

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. Siehe get_window für eine Liste von Fenstern und erforderliche Parameter. Wenn window Array-ähnlich ist, wird es direkt als Fenster verwendet und seine Länge muss nperseg entsprechen.

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_COLA

Prüft, ob die Constant OverLap Add (COLA) Bedingung erfüllt ist.

stft

Kurzzeit-Fourier-Transformation

istft

Inverse Kurzzeit-Fourier-Transformation

Hinweise

Damit die Inversion einer STFT über die inverse STFT in istft mö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