Trazar la Transformada Rápida de Fourier(FFT) en Python
-
Utilice el módulo
scipy.fft
de Python para la transformación rápida de Fourier -
Utilice el módulo Python
numpy.fft
para la transformación rápida de Fourier
En este artículo del tutorial de Python, entenderemos la Transformada rápida de Fourier y la trazaremos en Python.
El análisis de Fourier transmite una función como un agregado de componentes periódicos y extrae esas señales de los componentes. Cuando tanto la función como su transformada se intercambian con las partes discretas, entonces se expresa como Transformada de Fourier.
FFT trabaja principalmente con algoritmos computacionales para aumentar la velocidad de ejecución. Algoritmos de filtrado, multiplicación, procesamiento de imágenes son algunas de sus aplicaciones.
Utilice el módulo scipy.fft
de Python para la transformación rápida de Fourier
Uno de los puntos más importantes para medir en la Transformada rápida de Fourier es que solo podemos aplicarlo a datos en los que la marca de tiempo es uniforme. El módulo scipy.fft
convierte el dominio de tiempo dado en el dominio de frecuencia. La FFT de longitud N secuencia x[n]
se calcula mediante la función fft()
.
Por ejemplo,
from scipy.fftpack import fft
import numpy as np
x = np.array([4.0, 2.0, 1.0, -3.0, 1.5])
y = fft(x)
print(y)
Producción :
[5.5 -0.j 6.69959347-2.82666927j 0.55040653+3.51033344j
0.55040653-3.51033344j 6.69959347+2.82666927j]
También podemos usar señales ruidosas ya que requieren un alto cálculo. Por ejemplo, podemos usar la función numpy.sin()
para crear una serie sinusoidal y trazarla. Para trazar la serie, usaremos el módulo Matplotlib
.
Vea el siguiente ejemplo.
import scipy.fft
import matplotlib.pyplot as plt
import numpy as np
N = 500
T = 1.0 / 600.0
x = np.linspace(0.0, N * T, N)
y = np.sin(60.0 * 2.0 * np.pi * x) + 0.5 * np.sin(90.0 * 2.0 * np.pi * x)
y_f = scipy.fft.fft(y)
x_f = np.linspace(0.0, 1.0 / (2.0 * T), N // 2)
plt.plot(x_f, 2.0 / N * np.abs(y_f[: N // 2]))
plt.show()
Tenga en cuenta que el módulo scipy.fft
se basa en el módulo scipy.fftpack
con más características adicionales y funcionalidad actualizada.
Utilice el módulo Python numpy.fft
para la transformación rápida de Fourier
El numpy.fft
funciona de forma similar al módulo scipy.fft
. El scipy.fft
exporta algunas características del numpy.fft
.
El numpy.fft
se considera más rápido cuando se trata de matrices 2D. La implementación es la misma.
Por ejemplo,
import matplotlib.pyplot as plt
import numpy as np
N = 500
T = 1.0 / 600.0
x = np.linspace(0.0, N * T, N)
y = np.sin(60.0 * 2.0 * np.pi * x) + 0.5 * np.sin(90.0 * 2.0 * np.pi * x)
y_f = np.fft.fft(y)
x_f = np.linspace(0.0, 1.0 / (2.0 * T), N // 2)
plt.plot(x_f, 2.0 / N * np.abs(y_f[: N // 2]))
plt.show()