scipy.signal.windows.

blackman#

scipy.signal.windows.blackman(M, sym=True, *, xp=None, device=None)[Quelle]#

Gibt ein Blackman-Fenster zurück.

Das Blackman-Fenster ist ein Abrundungsfilter, der durch die Verwendung der ersten drei Terme einer Summe von Kosinusfunktionen gebildet wird. Es wurde entwickelt, um eine möglichst geringe Streuung zu erzielen. Es ist nahezu optimal und nur geringfügig schlechter als ein Kaiser-Fenster.

Parameter:
Mint

Anzahl der Punkte im Ausgabefenster. Wenn Null, wird ein leeres Array zurückgegeben. Bei negativen Werten wird eine Ausnahme ausgelöst.

symbool, optional

Wenn True (Standard), wird ein symmetrisches Fenster zur Filterentwurf verwendet. Wenn False, wird ein periodisches Fenster für die Spektralanalyse generiert.

xparray_namespace, optional

Optionaler Array-Namespace. Sollte mit dem Array-API-Standard kompatibel sein oder von array-api-compat unterstützt werden. Standard: numpy

device: any

optionale Gerätespezifikation für die Ausgabe. Sollte mit einer der unterstützten Gerätespezifikationen in xp übereinstimmen.

Rückgabe:
wndarray

Das Fenster, dessen Maximalwert auf 1 normiert ist (obwohl der Wert 1 nicht erscheint, wenn M gerade und sym True ist).

Hinweise

Das Blackman-Fenster ist definiert als

\[w(n) = 0.42 - 0.5 \cos(2\pi n/M) + 0.08 \cos(4\pi n/M)\]

Das „exakte Blackman“-Fenster wurde entwickelt, um die dritte und vierte Seitenkeule zu nullen, hat aber Diskontinuitäten an den Grenzen, was zu einem Abfall von 6 dB/Oktave führt. Dieses Fenster ist eine Annäherung an das „exakte“ Fenster, das die Seitenkeulen nicht so gut nullt, aber an den Rändern glatt ist und die Abfallrate auf 18 dB/Oktave verbessert. [3]

Die meisten Verweise auf das Blackman-Fenster stammen aus der Signalverarbeitungsliteratur, wo es als eine von vielen Fensterfunktionen zur Glättung von Werten verwendet wird. Es ist auch als Apodisationsfunktion (was „Entfernen des Fußes“ bedeutet, d.h. Glätten von Diskontinuitäten am Anfang und Ende des abgetasteten Signals) oder als Abrundungsfunktion bekannt. Es gilt als „nahezu optimale“ Abrundungsfunktion, die (nach einigen Maßstäben) fast so gut ist wie das Kaiser-Fenster.

Referenzen

[1]

Blackman, R.B. und Tukey, J.W., (1958) The measurement of power spectra, Dover Publications, New York.

[2]

Oppenheim, A.V., und R.W. Schafer. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1999, S. 468-471.

[3]

Harris, Fredric J. (Januar 1978). „On the use of Windows for Harmonic Analysis with the Discrete Fourier Transform“. Proceedings of the IEEE 66 (1): 51-83. DOI:10.1109/PROC.1978.10837.

Beispiele

Plotten Sie das Fenster und seine Frequenzantwort

>>> import numpy as np
>>> from scipy import signal
>>> from scipy.fft import fft, fftshift
>>> import matplotlib.pyplot as plt
>>> window = signal.windows.blackman(51)
>>> plt.plot(window)
>>> plt.title("Blackman window")
>>> plt.ylabel("Amplitude")
>>> plt.xlabel("Sample")
>>> plt.figure()
>>> A = fft(window, 2048) / (len(window)/2.0)
>>> freq = np.linspace(-0.5, 0.5, len(A))
>>> response = np.abs(fftshift(A / abs(A).max()))
>>> response = 20 * np.log10(np.maximum(response, 1e-10))
>>> plt.plot(freq, response)
>>> plt.axis([-0.5, 0.5, -120, 0])
>>> plt.title("Frequency response of the Blackman window")
>>> plt.ylabel("Normalized magnitude [dB]")
>>> plt.xlabel("Normalized frequency [cycles per sample]")
../../_images/scipy-signal-windows-blackman-1_00.png
../../_images/scipy-signal-windows-blackman-1_01.png