Plotten der schnellen Fourier-Transformation(FFT) in Python

Shivam Arora 30 Januar 2023
  1. Verwendung von das Python-Modul scipy.fft für die schnelle Fourier-Transformation
  2. Verwendung von das Python-Modul numpy.fft für die schnelle Fourier-Transformation
Plotten der schnellen Fourier-Transformation(FFT) in Python

In diesem Python-Tutorial-Artikel werden wir die schnelle Fourier-Transformation verstehen und in Python darstellen.

Die Fourier-Analyse vermittelt eine Funktion als Aggregat periodischer Komponenten und extrahiert diese Signale aus den Komponenten. Wenn sowohl die Funktion als auch ihre Transformation mit den diskreten Teilen ausgetauscht werden, wird dies als Fourier-Transformation ausgedrückt.

FFT arbeitet hauptsächlich mit Rechenalgorithmen zur Erhöhung der Ausführungsgeschwindigkeit. Filteralgorithmen, Multiplikation, Bildverarbeitung sind einige seiner Anwendungen.

Verwendung von das Python-Modul scipy.fft für die schnelle Fourier-Transformation

Einer der wichtigsten Punkte, die bei der Fast-Fourier-Transformation gemessen werden müssen, ist, dass wir sie nur auf Daten anwenden können, bei denen der Zeitstempel einheitlich ist. Das Modul scipy.fft wandelt den vorgegebenen Zeitbereich in den Frequenzbereich um. Die FFT der Länge N Sequenz x[n] wird durch die Funktion fft() berechnet.

Zum Beispiel,

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)

Ausgabe:

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

Wir können auch verrauschte Signale verwenden, da sie einen hohen Rechenaufwand erfordern. Zum Beispiel können wir die Funktion numpy.sin() verwenden, um eine Sinusreihe zu erstellen und diese darzustellen. Zum Plotten der Serie verwenden wir das Modul Matplotlib.

Siehe das folgende Beispiel.

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

python scipy fft beispiel

Beachten Sie, dass das Modul scipy.fft auf dem Modul scipy.fftpack mit weiteren zusätzlichen Funktionen und aktualisierten Funktionen aufbaut.

Verwendung von das Python-Modul numpy.fft für die schnelle Fourier-Transformation

Das numpy.fft funktioniert ähnlich wie das Modul scipy.fft. Die scipy.fft exportiert einige Features aus der numpy.fft.

Die numpy.fft gilt als schneller beim Umgang mit 2D-Arrays. Die Umsetzung ist die gleiche.

Zum Beispiel,

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

python numpy fft beispiel