Je suis nouveau dans le traitement du signal et en particulier dans la FFT, donc je ne sais pas si je fais la bonne chose ici et je suis un peu confus avec le résultat.
J'ai une fonction réelle discrète (données de mesure) et je veux mettre en place un filtre passe-bas à ce sujet. L'outil de choix est Python avec le paquet numpy. Je suis cette procédure:
- calculer le fft de ma fonction
- couper les hautes fréquences
- effectuer le fft inverse
Voici le code que j'utilise:
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)
Est-ce la bonne procédure? Le résultat inverse
contient des valeurs complexes, ce qui m'embrouille.