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 :
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
Quelqu'un pourrait m'aider SVP ?

J'essaierai de faire un ptit article sur le filtrage FFT une fois que tout ca sera mis au point

MERCI D'AVANCE !!!