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