Matplotlib.pyplot.specgram() en Python

Suraj Joshi 30 enero 2023
  1. Espectrograma de parcela usando el método matplotlib.pyplot.specgram()
  2. Plot Spectrogram Usando el scipy.signal.spectrogram() método
Matplotlib.pyplot.specgram() en Python

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:

Plot Spectrogram usando el método matplotlib.pyplot.specgram()

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:

Espectrograma Usando el método scipy.signal.spectrogram()

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 avatar Suraj Joshi avatar

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

LinkedIn