IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

Hautes et Basses frequences FFT


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut Hautes et Basses frequences FFT
    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 !!!

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Avec des images du signal original, filtré + des FFT associées, ça irait mieux (tu peux les mettre sur imageshack par exemple)

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Voici mes deux courbes



    Courbe non filtrée :


    Courbe filtrée :

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Nouvelle question...

    Lorsque je fais une FFT , j'ai un tableau de complexes. Apparement, ca code l'amplitude et la phase. Une forte fréquence est elle codée par une faible amplitude ? Ce qui pourrait expliquer pourquoi mon filtre marche.

    Merci

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Faut vraiment que tu te mettes à un court de TS...

    Tu as les courbes de ton signal non filtré et filtré dans le domaine spectral ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Ba si tu veux , je suis en thèse sur la dynamique moléculaire , donc le traitement du signal normalement j'en ai pas vraiment besoin, je fais ca pour éviter de faire une moyenne flottante, et j'ai pas mal de choses a faire à coté . En gros ce filtrage , c'est un détail sur mon projet qui au final me prend énormément de temps.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par johnkhm Voir le message
    Ba si tu veux , je suis en thèse sur la dynamique moléculaire , donc le traitement du signal normalement j'en ai pas vraiment besoin, je fais ca pour éviter de faire une moyenne flottante, et j'ai pas mal de choses a faire à coté . En gros ce filtrage , c'est un détail sur mon projet qui au final me prend énormément de temps.
    Je connais

    Les résultats que tu obtiens par une FFT (tu dois toujours encore me les montrer ) sont pairs en amplitude par rapport à la fréquence de Shannon et impaire en phase.
    Si l'amplitude est grande, la fréquence est très présente (prends un signal simple, un sinus ou un cosinus, et regarde son spectre avec la FFT), c'est proportionnel.

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Voilou ,

    Pour le spectre , je ne sais pas si c'est ce que tu me demandais , mais j'ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    plot(abs(signal))
    show()
    avant et apres le filtre , donc on ne voit pas la composante imaginaire.
    Avant le filtre :

    Apres le filtre :

    J'ai fait un peiti zoom car il y avait quelques valeurs tres importantes qui masquaient les petits signaux


    J'ai aussi mis le Power Spectral Density , au cas ou ...
    PSD avant le filtre :

    PSD Apres:




    MErci !

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    PSD, c'est juste une autre manière de voir le spectre, rien de plus.

    Ce qui est certain, c'est que tu ne coupes pas les hautes fréquences, car tu as des trous partout. Si tu effaçais bien juste les HF, tu aurais un plateau à 0 au milieu et c'est tout. Ce n'est pas le cas ici, donc tu dénatures à 100% ton signal.

    C'est pour ça que je te conseille de passer par un vrai filtre passe-bas classique, avec gabarit, ...

  10. #10
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut


    Ok ..... Bon bé ya plus qu'a s'y remettre
    Sinon je travaille sous Linux , connaitrais tu programme qui fasse ce filtre passe bas ?

    Merci Encore !!

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Matlab ou Python/Numpy/Scipy

  12. #12
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    lol ok

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par johnkhm Voir le message
    lol ok
    Faut bien que je fasse ma pub

  14. #14
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Bon je suis tétu comme une mule , et j'ai un peu continué , je crois uqe je suis sur la bonne voie , j'arrive a supprimer les pics uniquement au milieu du spectre et agrandir cette fenetre ,ca me fait un signal filtré

    lol

    Je soumettrai une nouvelle version , voir si elle va etre acceptée ou pas

  15. #15
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ca marche, montre

  16. #16
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Courbe initiale :


    Spectre :



    PSD :



    ------------- Suppression des pics centraux


    Petit filtre du Spectre :


    PSD Filtre


    Courbe Finale :


    Si c'est bon , je met l'algo en ligne demain

  17. #17
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est bon. Sache tout de même que cette opération a convolué ton signal avec un sinus cardinal et donc tu as aussi un repliement de signal qui s'est produit (ce n'est pas le cas avec un filtrage classique).

  18. #18
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    J'ai essayé de me mettre aux problemes du au repliement de signal du a la numerisation , et aux conséquences sur le FFT.

    Dans mon cas précis , je me base sur un signal deja numérisé. Je regarde ainsi la fluctuation des positions des atomes au cours du temps toutes les 10ps alors que le saut de temps devrait etre de 2fs ( soit 5000 fois plus ). Ce qui voudrait dire que mon signal de base est biaisé.

    Cependant !
    Ces petites fluctuations qui se produisent entre mes deux sauts de 2fs sont de tres faible ampleur. Et mes données relevées par des sauts de 10ps traduiraient fidèlement le déplacement global des atomes durant tout cet intervalle.
    De plus , le filtre FFT que j'utilise est réalisé dans le but d'observer des sauts de positions de grande amplitude, et d'un ordre de temps vingt fois suppérieur a mon saut.

    Mon but n'étant donc non PAS de retracer précisement l'évolution du système a une résolution si fine , mais plustot de retracer l'évolution globale des distances au sein de mon système, penses tu que ces phénomènes de reflexion pourraient biaiser de facon importante mes données ?

    Je fais tout cela afin de trouver une justification sur ma méthode de Smoothing.
    ( a la base je faisais des moyennes flottantes , donc je pense deja avoir fait un pas en avant )


    MERCI !!!!

  19. #19
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par johnkhm Voir le message
    Dans mon cas précis , je me base sur un signal deja numérisé.
    S'il est déjà numérisé, tu peux avoir du repliement aussi. Dans le cas présent, je penche pour une forte probabilité de repliement temporel.

  20. #20
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Argh

    Et tu penses que ca biaise beaucoup l'image de l'évolution globale du système que j'observe ?

    En tout cas merci énormément pour ton aide !! c vraiment sympa


    Je v mettre la procédure de filtrage sur forum opur ceux a qui ca peut servir ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/04/2019, 09h28
  2. [WM18] Android - Zone répétée - affichage dans rupture haute ou basse
    Par fdelepine dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 25/08/2013, 20h46
  3. [XL-2007] Macro - bordure haute et basse
    Par guigol dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2013, 15h53
  4. Réunir 2 conditions val Haut et basse ?
    Par Jimy6000 dans le forum Excel
    Réponses: 51
    Dernier message: 23/02/2008, 08h38
  5. Division : partie haute et partie basse
    Par nitteo dans le forum Assembleur
    Réponses: 13
    Dernier message: 08/05/2006, 23h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo