Bonjour ,
Question qui peut paraitre toute bete ....
J'essaie de filtrer des hautes fréquences sur une courbe ... Pour cela , j'éffectue une transformée de fourrier et je met a zero toutes les fréquences au dela d'un seuil.
Mon filtre marche tres bien , mais une étape reste mystérieuse ... J'ai réussi a appliquer le filtre par erreur en mettant un "<" a la place d'un ">" . En effet , c'est la que mon érreur magique est survenue , les fréquences suppérieures a mon seuil , donc les fréquences les plus hautes sont conservées , et les fréquences en dessous sont supprimées. Donc je devrais avoir conservé que les fortes oscillations , et avoir supprimé les mouvement globaux . Mais ce n'est pas le cas
Voici le code :
Quelqu'un pourrait m'aider SVP ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 def filterSignal(data,nb,cutoff) : signal = fft(data) tmpDat = [] for i in signal : if abs(real(i)) > cutoff : # !!! Je conserve que les HAUTES fréquences tmpDat.append(i) else : tmpDat.append(complex(0,0)) # j'anihile les basses fréquences print tmpDat signal = array(tmpDat) smoothed = ifft(signal) result = [] for i in smoothed : result.append(real(i)) print "----------------"*5 plot (result[:-nb]) show() # ----------> Courbe bien smoothée return result
J'essaierai de faire un ptit article sur le filtrage FFT une fois que tout ca sera mis au point
MERCI D'AVANCE !!!
Partager