Plotten der schnellen Fourier-Transformation(FFT) in Python
-
Verwendung von das Python-Modul
scipy.fft
für die schnelle Fourier-Transformation -
Verwendung von das Python-Modul
numpy.fft
für die schnelle Fourier-Transformation
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()
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()