Matplotlib.pyplot.specgram() en Python

Suraj Joshi 30 janvier 2023
  1. Tracer un spectrogramme en utilisant la méthode matplotlib.pyplot.specgram()
  2. Tracez le spectrogramme en utilisant la méthode scipy.signal.spectrogram()
Matplotlib.pyplot.specgram() en Python

Ce tutoriel explique comment nous pouvons tracer des spectrogrammes en Python en utilisant les méthodes matplotlib.pyplot.specgram() et scipy.signal.spectrogram().

Nous pouvons obtenir des détails sur la force d’un signal en utilisant un spectrogramme. Plus la couleur du spectrogramme est sombre en un point, plus le signal est fort en ce point.

Tracer un spectrogramme en utilisant la méthode 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)

Exemple : Tracer un spectrogramme en utilisant la méthode 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()

Production :

Tracer le spectrogramme en utilisant la méthode matplotlib.pyplot.specgram()

Il crée un spectrogramme pour la fonction A=20sin(3*np.pi*t) en utilisant la méthode matplotlib.pyplot.specgram(). L’argument fs dans la méthode représente la fréquence d’échantillonnage.

Tracez le spectrogramme en utilisant la méthode 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()

Production :

Spectrogramme utilisant la méthode scipy.signal.spectrogram()

Il crée un spectrogramme pour la fonction A=2sin(300*np.pi*t) en utilisant la méthode scipy.signal.spectrogram(). L’argument fs dans la méthode représente la fréquence d’échantillonnage et ntft représente la longueur du FFT utilisé.

La méthode retourne trois valeurs f, t et Sxx. f représente le tableau des fréquences d’échantillonnage, t représente le tableau des temps d’échantillonnage et Sxx représente le spectrogramme de A.

Cette méthode ne génère pas le tracé du spectrogramme du signal d’entrée. Nous pouvons utiliser matplotlib.pyplot.colormesh() pour générer la figure.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn