Traçar a transformação rápida de Fourier(FFT) em Python

Shivam Arora 15 fevereiro 2024
  1. Use o módulo Python scipy.fft para Fast Fourier Transform
  2. Use o módulo Python numpy.fft para Fast Fourier Transform
Traçar a transformação rápida de Fourier(FFT) em Python

Neste artigo do tutorial do Python, entenderemos a Transformação Rápida de Fourier e a plotaremos em Python.

A análise de Fourier transmite uma função como um agregado de componentes periódicos e extrai esses sinais dos componentes. Quando a função e sua transformada são trocadas com as partes discretas, ela é expressa como transformada de Fourier.

FFT trabalha principalmente com algoritmos computacionais para aumentar a velocidade de execução. Algoritmos de filtragem, multiplicação, processamento de imagens são algumas de suas aplicações.

Use o módulo Python scipy.fft para Fast Fourier Transform

Um dos pontos mais importantes a serem medidos na Transformada Rápida de Fourier é que só podemos aplicá-la a dados nos quais o carimbo de data / hora é uniforme. O módulo scipy.fft converte o domínio do tempo dado no domínio da frequência. A FFT de sequência de comprimento N x[n] é calculada pela função fft().

Por exemplo,

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)

Produção:

[5.5       -0.j         6.69959347-2.82666927j 0.55040653+3.51033344j
 0.55040653-3.51033344j 6.69959347+2.82666927j]

Também podemos usar sinais ruidosos, pois eles exigem alta computação. Por exemplo, podemos usar a função numpy.sin() para criar uma série de seno e plotá-la. Para traçar a série, usaremos o módulo Matplotlib.

Veja o seguinte exemplo.

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

exemplo python scipy fft

Observe que o módulo scipy.fft é construído no módulo scipy.fftpack com mais recursos adicionais e funcionalidade atualizada.

Use o módulo Python numpy.fft para Fast Fourier Transform

O numpy.fft funciona de forma semelhante ao módulo scipy.fft. O scipy.fft exporta algumas funcionalidades do numpy.fft.

O numpy.fft é considerado mais rápido ao lidar com matrizes 2D. A implementação é a mesma.

Por exemplo,

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

exemplo python numpy fft