Ich bin neu in der Signalverarbeitung und besonders in der FFT. Daher bin ich mir nicht sicher, ob ich hier das Richtige tue und bin ein bisschen verwirrt mit dem Ergebnis.
Ich habe eine diskrete reelle Funktion (Messdaten) und möchte darauf einen Tiefpassfilter aufbauen. Das Werkzeug der Wahl ist Python mit dem Numpy-Paket. Ich folge dieser Prozedur:
- berechne die fft meiner Funktion
- Hochfrequenzen abschneiden
- Führe das inverse fft aus
Hier ist der Code, den ich verwende:
import numpy as np
sampling_length = 15.0*60.0 # measured every 15 minutes
Fs = 1.0/sampling_length
ls = range(len(data)) # data contains the function
freq = np.fft.fftfreq(len(data), d = sampling_length)
fft = np.fft.fft(data)
x = freq[:len(data)/2]
for i in range(len(x)):
if x[i] > 0.005: # cut off all frequencies higher than 0.005
fft[i] = 0.0
fft[len(data)/2 + i] = 0.0
inverse = np.fft.ifft(fft)
Ist das die richtige Vorgehensweise? Das Ergebnis inverse
enthält komplexe Werte, die mich verwirren.
fft
lowpass-filter
python
Bis B
quelle
quelle
Antworten:
Dass das Ergebnis komplex ist, ist zu erwarten. Ich möchte auf ein paar Dinge hinweisen:
Sie wenden einen Brick-Wall-Frequenzbereich-Filter auf die Daten an, versuchen, alle FFT-Ausgänge auf Null zu setzen, die einer Frequenz von mehr als 0,005 Hz entsprechen, und transformieren sie dann rückwärts, um wieder ein Zeitbereichssignal zu erhalten. Damit das Ergebnis real ist, muss die Eingabe in die inverse FFT konjugiert symmetrisch sein . Dies bedeutet, dass für eine Länge FFTN
Ich sehe, dass Sie in Ihrem obigen Code versucht haben, so etwas zu tun, aber es ist nicht ganz richtig. Wenn Sie die obige Bedingung für das Signal erzwingen, das Sie an die inverse FFT übergeben, sollten Sie ein echtes Signal ausgeben.
Es gibt praktischere Möglichkeiten, Tiefpassfilter sowohl im Zeit- als auch im Frequenzbereich anzuwenden. Finite-Impulsantwort- und Infinite-Impulsantwort- Filter können direkt unter Verwendung ihrer Differenzgleichungsdarstellung angewendet werden . Oder, wenn Sie einen Filter , eine ausreichend lange Impulsantwort hat, können Sie oft Performance - Vorteile mit erhalten schnelle Faltungstechniken auf der Basis der FFT (Anwendung den Filters durch im Frequenzbereich multipliziert wird anstelle der Faltung in der Zeitdomäne), wie die überlagernde Methoden speichern und überlappen .
quelle