En este artículo se explicará como generar una gráfica de una señal que se tiene en el dominio del tiempo a generar la gráfica en el dominio de la frecuencia.
Esté artículo se basa de un artículo en Inglés llamado "How to plot the frequency spectrum with scipy" .
El análisis de frecuencia es el proceso de determinar la representación en el dominio de una señal de dominio del tiempo y comunmente empleando la Transformada de Fourier.
La Transformada Discreta de Fourier (DFT) se usa para determinar el contenido de frecuencias de las señales y la Transformada Rápida de Fourier (FFT) es un método eficiente para calcular la Transformada Discreta de Fourier. Scipy implemente FFT y se usará para analizar el espectro de frecuencias.
A continuación se muestra el código que gráfica la amplitud en el dominio de frecuencia de la función coseno del dominio del tiempo:
![]()
Esté artículo se basa de un artículo en Inglés llamado "How to plot the frequency spectrum with scipy" .
El análisis de frecuencia es el proceso de determinar la representación en el dominio de una señal de dominio del tiempo y comunmente empleando la Transformada de Fourier.
La Transformada Discreta de Fourier (DFT) se usa para determinar el contenido de frecuencias de las señales y la Transformada Rápida de Fourier (FFT) es un método eficiente para calcular la Transformada Discreta de Fourier. Scipy implemente FFT y se usará para analizar el espectro de frecuencias.
A continuación se muestra el código que gráfica la amplitud en el dominio de frecuencia de la función coseno del dominio del tiempo:
#!/usr/bin/env python# -*- coding: utf-8 -*-#Importa coseno, linspace y pifrom numpy import cos, linspace, pi#Importa plot, show, title, xlabel, ylabel y subplot para graficarfrom pylab import plot, show, title, xlabel, ylabel, subplot#Importa fft y arangefrom scipy import fft, arange#def plotSpectrum(y,Fs): """ grafica la amplitud del espectro de y(t) """ n = len(y) # longitud de la señal k = arange(n) T = n/Fs frq = k/T # 2 lados del rango de frecuancia frq = frq[range(n/2)] # Un lado del rango de frecuencia Y = fft(y)/n # fft calcula la normalizacion Y = Y[range(n/2)] plot(frq,abs(Y),'r') # grafica el espectro de frecuencia xlabel('Frecuencia (Hz)') ylabel('|Y(f)|')if __name__ == '__main__': Fs = 150.0; # rata de muestreo Ts = 1.0/Fs; # intevalo de muestreo t = arange(0,1,Ts) # vector tiempo ff = 5; # frecuencia de la señal y = cos(5*pi*ff*t) #Proceso de graficar la señal subplot(2,1,1) plot(t,y) xlabel('Tiempo') ylabel('Amplitud') subplot(2,1,2) #Se llama a la funcion con la señal y la rata de muestreo plotSpectrum(y,Fs) show()Al ejecutar el script se genera la siguiente gráfica: