Matplotlib.pyplot.specgram() em Python

Suraj Joshi 15 fevereiro 2024
  1. Spectrogramas de plotagem Utilizando o método matplotlib.pyplot.specgram()
  2. Plot Spectrogram Utilizando o método scipy.signal.spectrogram()
Matplotlib.pyplot.specgram() em Python

Este tutorial explica como podemos traçar espectrosgramas em Python utilizando os métodos matplotlib.pyplot.specgram() e scipy.signal.spectrogram().

Podemos obter detalhes sobre a força de um sinal utilizando um espectograma. Quanto mais escura for a cor do espectrograma num ponto, mais forte é o sinal nesse ponto.

Spectrogramas de plotagem Utilizando o 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)

Exemplo: Spectrograma de Lote Utilizando o 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()

Resultado:

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

Cria um espectograma para a função A=20sin(3*np.pi*t) utilizando o método matplotlib.pyplot.specgram(). O argumento fs no método representa a frequência de amostragem.

Plot Spectrogram Utilizando o método 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()

Resultado:

Spectrogram Usando o método scipy.signal.spectrogram()

Cria um espectograma para a função A=2sin(300*np.pi*t) utilizando o método scipy.signal.spectrogram(). O argumento fs no método representa a frequência de amostragem e ntft representa o comprimento do FFT utilizado.

O método retorna três valores f, t, e Sxx. O f representa o array de frequências de amostragem, o t representa o array de tempos de amostragem e o Sxx representa o espectrograma de A.

Este método não gera o gráfico do espectrograma do sinal de entrada. Podemos utilizar matplotlib.pyplot.colormesh() para gerar a figura.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn