Trazar la Transformada Rápida de Fourier(FFT) en Python

Shivam Arora 30 enero 2023
  1. Utilice el módulo scipy.fft de Python para la transformación rápida de Fourier
  2. Utilice el módulo Python numpy.fft para la transformación rápida de Fourier
Trazar la Transformada Rápida de Fourier(FFT) en Python

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()

ejemplo de python scipy fft

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()

ejemplo de python numpy fft