Matplotlib.pyplot.specgram() in Python

Suraj Joshi 15 febbraio 2024
  1. Plot Spectrogram Usando il metodo matplotlib.pyplot.specgram()
  2. Plot Spectrogram Usando il metodo scipy.signal.spectrogram()
Matplotlib.pyplot.specgram() in Python

Questo tutorial spiega come possiamo tracciare spettrogrammi in Python usando i metodi matplotlib.pyplot.specgram() e scipy.signal.spectrogram().

Possiamo ottenere dettagli sulla forza di un segnale usando uno spettrogramma. Più scuro è il colore dello spettrogramma in un punto, più forte è il segnale in quel punto.

Plot Spectrogram Usando il metodo 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)

Esempio: diagramma dello spettrogramma utilizzando il metodo 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()

Produzione:

Traccia lo spettrogramma utilizzando il metodo matplotlib.pyplot.specgram()

Crea uno spettrogramma per la funzione A=20sin(3*np.pi*t) utilizzando il metodo matplotlib.pyplot.specgram(). L’argomento fs nel metodo rappresenta la frequenza di campionamento.

Plot Spectrogram Usando il metodo 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()

Produzione:

Spettrogramma Utilizzando il metodo scipy.signal.spectrogram()

Crea uno spettrogramma per la funzione A=2sin(300*np.pi*t) utilizzando il metodo scipy.signal.spectrogram(). L’argomento fs nel metodo rappresenta la frequenza di campionamento e ntft rappresenta la lunghezza della FFT utilizzata.

Il metodo restituisce tre valori f, t e Sxx. f rappresenta l’array di frequenze di campionamento, t rappresenta l’array di tempi di campionamento e Sxx rappresenta lo spettrogramma di A.

Questo metodo non genera il grafico dello spettrogramma del segnale in ingresso. Possiamo usare matplotlib.pyplot.colormesh() per generare la figura.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn