Matplotlib.pyplot.specgram() in Python

Suraj Joshi 15 Februar 2024
  1. Plotten eines Spektrogramms mit der Methode matplotlib.pyplot.specgram()
  2. Plotten des Spektrogramms mit der Methode scipy.signal.spectrogram()
Matplotlib.pyplot.specgram() in Python

Dieses Tutorial erklärt, wie man Spektrogramme in Python mit den Methoden matplotlib.pyplot.specgram() und scipy.signal.spectrogram() plotten kann.

Wir können mit einem Spektrogramm Details über die Stärke eines Signals erhalten. Je dunkler die Farbe des Spektrogramms an einem Punkt ist, desto stärker ist das Signal an diesem Punkt.

Plotten eines Spektrogramms mit der Methode 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)

Beispiel: Plotten des Spektrogramms mit der Methode matplotlib.pyplot.specgram()

import math
import numpy as np
import matplotlib.pyplot as plt

dt = 0.0001
w = 2
t = np.linspace(0, 5, math.ceil(5 / dt))
A = 20 * (np.sin(3 * np.pi * t))

plt.specgram(A, Fs=1)
plt.title("Spectrogram Using matplotlib.pyplot.specgram() method")
plt.show()

Ausgabe:

Plot-Spektrogramm unter Verwendung der Methode matplotlib.pyplot.specgram()

Es wird ein Spektrogramm für die Funktion A=20sin(3*np.pi*t) mit Hilfe der Methode matplotlib.pyplot.specgram() erstellt. Das Argument fs in der Methode stellt die Abtastfrequenz dar.

Plotten des Spektrogramms mit der Methode scipy.signal.spectrogram()

import math
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

dt = 0.0001
w = 2
t = np.linspace(0, 5, math.ceil(5 / dt))
A = 2 * (np.sin(1 * np.pi * 300 * t))

f, t, Sxx = signal.spectrogram(A, fs=1, nfft=514)
plt.pcolormesh(t, f, Sxx)
plt.ylabel("Frequency")
plt.xlabel("Time")
plt.title("Spectrogram Using scipy.signal.spectrogram() method")
plt.show()

Ausgabe:

Spektrogramm mit der Methode scipy.signal.spectrogram()

Es wird ein Spektrogramm für die Funktion A=2sin(300*np.pi*t) mit der Methode scipy.signal.spectrogram() erstellt. Das Argument fs in der Methode steht für die Abtastfrequenz und ntft für die Länge der verwendeten FFT.

Die Methode gibt drei Werte f, t und Sxx zurück. f repräsentiert das Array der Abtastfrequenzen, t repräsentiert das Array der Abtastzeiten und Sxx repräsentiert das Spektrogramm von A.

Diese Methode generiert keinen Spektrogrammplot des Eingangssignals. Wir können matplotlib.pyplot.colormesh() verwenden, um die Abbildung zu erzeugen.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn