Matplotlib.pyplot.specgram() en Python
-
Espectrograma de parcela usando el método
matplotlib.pyplot.specgram()
-
Plot Spectrogram Usando el
scipy.signal.spectrogram()
método
Este tutorial explica cómo podemos graficar espectrogramas en Python usando los métodos matplotlib.pyplot.specgram()
y scipy.signal.spectrogram()
.
Podemos obtener detalles sobre la fuerza de una señal usando un espectrograma. Cuanto más oscuro es el color del espectrograma en un punto, más fuerte es la señal en ese punto.
Espectrograma de parcela usando el método 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)
Ejemplo: Trazar espectrograma usando el método 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()
Producción:
Crea un espectrograma para la función A=20sin(3*np.pi*t)
usando el método matplotlib.pyplot.specgram()
. El argumento fs
del método representa la frecuencia de muestreo.
Plot Spectrogram Usando el scipy.signal.spectrogram()
método
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()
Producción:
Crea un espectrograma para la función A=2sin(300*np.pi*t)
usando el método scipy.signal.spectrogram()
. El argumento fs
del método representa la frecuencia de muestreo y ntft
representa la longitud del FFT
utilizado.
El método devuelve tres valores f
, t
y Sxx
. f
representa el array de frecuencias de muestreo, t
representa el array de tiempos de muestreo y Sxx
representa el espectrograma de A
.
Este método no genera la gráfica del espectrograma de la señal de entrada. Podemos usar matplotlib.pyplot.colormesh()
para generar la figura.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn