scipy.signal.windows.

flattop#

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

Gibt ein Flat-Top-Fenster zurück.

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

Flat-Top-Fenster werden für genaue Messungen der Signal amplitude im Frequenzbereich verwendet, mit minimalem Scalloping-Fehler vom Zentrum eines Frequenzbins zu seinen Kanten, verglichen mit anderen. Dies ist ein Kosinusfenster der 5. Ordnung, wobei die 5 Terme optimiert wurden, um den Hauptlappen maximal flach zu machen. [1]

Referenzen

[1]

D’Antona, Gabriele, und A. Ferrero, „Digital Signal Processing for Measurement Systems“, Springer Media, 2006, S. 70 DOI:10.1007/0-387-28666-7.

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.flattop(51)
>>> plt.plot(window)
>>> plt.title("Flat top 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 = 20 * np.log10(np.abs(fftshift(A / abs(A).max())))
>>> plt.plot(freq, response)
>>> plt.axis([-0.5, 0.5, -120, 0])
>>> plt.title("Frequency response of the flat top window")
>>> plt.ylabel("Normalized magnitude [dB]")
>>> plt.xlabel("Normalized frequency [cycles per sample]")
../../_images/scipy-signal-windows-flattop-1_00.png
../../_images/scipy-signal-windows-flattop-1_01.png