Matplotlib.pyplot.specgram() in Python
-
Plot Spectrogram Usando il metodo
matplotlib.pyplot.specgram() -
Plot Spectrogram Usando il metodo
scipy.signal.spectrogram()
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:

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:

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.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn