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 !!!







Répondre avec citation
Partager