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.