matplotlib.pyplot.specgram#
- matplotlib.pyplot.specgram(x, *, NFFT=None, Fs=None, Fc=None, detrend=None, window=None, noverlap=None, cmap=None, xextent=None, pad_to=None, sides=None, scale_by_freq=None, mode=None, scale=None, vmin=None, vmax=None, data=None, **kwargs)[Quelle]#
Plottet ein Spektrogramm.
Berechnet und plottet ein Spektrogramm der Daten in x. Die Daten werden in Segmente der Länge NFFT aufgeteilt und das Spektrum jedes Segments wird berechnet. Die Fensterfunktion window wird auf jedes Segment angewendet, und die Überlappung jedes Segments wird mit noverlap angegeben. Das Spektrogramm wird als Kolormap (mittels imshow) geplottet.
- Parameter:
- x1-D-Array oder Sequenz
Array oder Sequenz, die die Daten enthält.
- Fsfloat, Standard: 2
Die Abtastfrequenz (Samples pro Zeiteinheit). Sie wird zur Berechnung der Fourier-Frequenzen, freqs, in Zyklen pro Zeiteinheit verwendet.
- windowaufrufbar oder ndarray, Standard:
window_hanning Eine Funktion oder ein Vektor der Länge NFFT. Zur Erstellung von Fenstervektoren siehe
window_hanning,window_none,numpy.blackman,numpy.hamming,numpy.bartlett,scipy.signal,scipy.signal.get_windowusw. Wenn eine Funktion als Argument übergeben wird, muss sie ein Datensegment als Argument nehmen und die gefensterte Version des Segments zurückgeben.- sides{'default', 'onesided', 'twosided'}, optional
Welche Seiten des Spektrums zurückgegeben werden sollen. 'default' ist einseitig für reelle Daten und zweiseitig für komplexe Daten. 'onesided' erzwingt die Rückgabe eines einseitigen Spektrums, während 'twosided' zweiseitig erzwingt.
- pad_toint, optional
Die Anzahl der Punkte, auf die das Datensegment bei der Durchführung der FFT aufgefüllt wird. Dies kann sich von NFFT unterscheiden, welches die Anzahl der verwendeten Datenpunkte angibt. Obwohl dies die tatsächliche Auflösung des Spektrums nicht erhöht (der minimale Abstand zwischen auflösbaren Spitzen), kann es mehr Punkte im Diagramm ergeben und somit mehr Details ermöglichen. Dies entspricht dem Parameter n im Aufruf von
fft. Der Standardwert ist None, was pad_to gleich NFFT setzt.- NFFTint, Standard: 256
Die Anzahl der Datenpunkte, die in jedem Block für die FFT verwendet werden. Eine Zweierpotenz ist am effizientesten. Dies sollte NICHT zur Nullauffüllung verwendet werden, da die Skalierung des Ergebnisses sonst falsch ist; verwenden Sie stattdessen pad_to dafür.
- detrend{'none', 'mean', 'linear'} oder aufrufbar, Standard: 'none'
Die Funktion, die auf jedes Segment angewendet wird, bevor die FFT berechnet wird, und die dazu dient, den Mittelwert oder den linearen Trend zu entfernen. Im Gegensatz zu MATLAB, wo der Parameter detrend ein Vektor ist, ist er in Matplotlib eine Funktion. Das Modul
mlabdefiniertdetrend_none,detrend_meanunddetrend_linear, aber Sie können auch eine benutzerdefinierte Funktion verwenden. Sie können auch einen String verwenden, um eine der Funktionen auszuwählen: 'none' ruftdetrend_noneauf. 'mean' ruftdetrend_meanauf. 'linear' ruftdetrend_linearauf.- scale_by_freqbool, Standard: True
Ob die resultierenden Dichtewerte mit der Skalierungsfrequenz skaliert werden sollen, was die Dichte in Einheiten von 1/Hz liefert. Dies ermöglicht die Integration über die zurückgegebenen Frequenzwerte. Der Standardwert ist True für MATLAB-Kompatibilität.
- mode{'default', 'psd', 'magnitude', 'angle', 'phase'}
Welche Art von Spektrum verwendet werden soll. Standard ist 'psd' (Leistungsdichtespektrum). 'magnitude' gibt das Amplitudenspektrum zurück. 'angle' gibt das Phasenspektrum ohne Entfaltung zurück. 'phase' gibt das Phasenspektrum mit Entfaltung zurück.
- noverlapint, default: 128
Die Anzahl der überlappenden Punkte zwischen den Blöcken.
- scale{'default', 'linear', 'dB'}
Die Skalierung der Werte im spec. 'linear' bedeutet keine Skalierung. 'dB' gibt die Werte in dB-Skala zurück. Wenn mode 'psd' ist, sind dies dB-Leistung (10 * log10). Andernfalls sind dies dB-Amplitude (20 * log10). 'default' ist 'dB', wenn mode 'psd' oder 'magnitude' ist, und ansonsten 'linear'. Dies muss 'linear' sein, wenn mode 'angle' oder 'phase' ist.
- Fcint, Standard: 0
Die Mittenfrequenz von x, die die x-Bereiche des Plots versetzt, um den Frequenzbereich widerzuspiegeln, der bei der Erfassung eines Signals verwendet wird, und das dann gefiltert und auf Basisband heruntergetastet wird.
- cmap
Colormap, Standard:rcParams["image.cmap"](Standard:'viridis') - xextentNone oder (xmin, xmax)
Die Ausdehnung des Bildes entlang der x-Achse. Der Standardwert setzt xmin auf den linken Rand des ersten Intervalls (spectrum-Spalte) und xmax auf den rechten Rand des letzten Intervalls. Beachten Sie, dass bei noverlap>0 die Breite der Intervalle kleiner ist als die der Segmente.
- dataindizierbares Objekt, optional
Wenn angegeben, akzeptieren die folgenden Parameter auch einen String
s, der alsdata[s]interpretiert wird, wennsein Schlüssel indataistx
- vmin, vmaxfloat, optional
vmin und vmax definieren den Datenbereich, den die Kolormap abdeckt. Standardmäßig deckt die Kolormap den gesamten Wertebereich der Daten ab.
- **kwargs
Zusätzliche Schlüsselwortargumente werden an
imshowweitergegeben, welche das Spektrogramm-Bild erstellt. Das Argument origin wird nicht unterstützt.
- Gibt zurück:
- spectrum2D-Array
Spalten sind die Periodogramme aufeinanderfolgender Segmente.
- freqs1-D-Array
Die Frequenzen, die den Zeilen in spectrum entsprechen.
- t1D-Array
Die Zeiten, die den Mittelpunkten der Segmente entsprechen (d.h. den Spalten in spectrum).
- im
AxesImage Das von imshow erstellte Bild, das das Spektrogramm enthält.
Siehe auch
psdUnterscheidet sich im Standard-Überlappungsgrad, in der Rückgabe des Mittelwerts der Segment-Periodogramme, im Nicht-Zurückgeben von Zeiten und in der Erzeugung eines Liniendiagramms anstelle einer Kolormap.
magnitude_spectrumEin einzelnes Spektrum, ähnlich wie bei einem einzelnen Segment, wenn mode 'magnitude' ist. Plottet eine Linie anstelle einer Kolormap.
angle_spectrumEin einzelnes Spektrum, ähnlich wie bei einem einzelnen Segment, wenn mode 'angle' ist. Plottet eine Linie anstelle einer Kolormap.
phase_spectrumEin einzelnes Spektrum, ähnlich wie bei einem einzelnen Segment, wenn mode 'phase' ist. Plottet eine Linie anstelle einer Kolormap.
Anmerkungen
Hinweis
Dies ist der pyplot-Wrapper für
axes.Axes.specgram.Die Parameter detrend und scale_by_freq gelten nur, wenn mode auf 'psd' gesetzt ist.