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

Signal Discussion :

suppression d'amplitude et IFFT


Sujet :

Signal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Points : 15
    Points
    15
    Par défaut suppression d'amplitude et IFFT
    Bonjour tout le monde,

    je vous explique mon soucis, merci de me dire si vous avez une idée d'où mes problèmes viennent

    Tout d'abord, voici le contexte
    - j'ai une courbe bruité et j'ai fais une FFT de ce signal sous matlab afin d'avoir le spectre du signal.
    - les j'ai environ 6000 fréquences et celles qui me dérange sont les basses fréquences et quelques autres que je n'ai pas encore très bien identifiées.
    - pour commencer à filtrer j'ai essayé des filtres sous matlab mais apparemment ils ne semblent pas convenir à ma situation car tous les filtres
    que j'utilise déforment mon signal sur des zones que je ne veux pas (les pentes ne sont plus respectées or je veux vraiment garder les pentes de montées et descente, c'est juste le bruit des plateaux que je veux virer ).
    - Du coup, j'ai voulu annuler les fréquences basses de mon signal à l'aide de matlab et reconstruire le signal temporel à l'aide d'une FFT inverse.

    Résultats
    - Lorsque je passe de mon spectre (où j'ai mis les amplitudes à 0 pour les basses fréquences) à un signal temporelle à l'aide d'une FFT inverse j'ai un soucis :

    ==> la forme du signal résultant est nickel :Bravo1: mais l'amplitude de la courbe n'est plus la même que celle du signal de départ ! (l'amplitude à diminuée) (

    Explication

    du coup, je voudrais savoir si vous pourriez m'expliquer pourquoi mon amplitude générale à diminuer ? et comment la remettre à son niveau de départ.
    => je précise que si je fais une FFT de mon signal et une FFT inverse tout de suite après ça marche nickel
    => c'est lorsque je supprime des amplitudes de la FFT que je perds en amplitude globale.

    Ce qui m'etonne là dedans est que j'ai fais un test :
    => mettre toutes les amplitudes maximale du signal à 0 et je m'attendais au même résultat, mais là non... mon amplitude est bonne

    Mon code
    voici mon bout de code (et la PJ):
    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
    20
    21
    22
    23
    24
     
     noms='bruit.dat';
    donnees=importdata(noms);data=donnees.data;x=data(:,1)';y=data(:,5)';
    x=x-x(1);
    tempsEssai=x(end)-x(1);
    nbPoints=length(x);
    f_Echantillonage=nbPoints/tempsEssai;
    T=1/f_Echantillonage;
    t=T*(0:nbPoints-1);
    NFFT = nbPoints; %cas non precis mais marche bien ici
    Yfft=fft(y,NFFT)
    f=f_Echantillonage/2*linspace(0,1,NFFT/2);
    yInverse=ifft(Yfft);
    YfftModif=Yfft;
    nbFrequencesOK = 3000;
    [Xmin IxMin]=sort(x);
    for j=1:length(x)
        if(any(x(j)==Xmin(1:nbFrequencesOK)))
            %
        else
            YfftModif(j)=0;
        end
    end
    yInverseModif=ifft(YfftModif);
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Si tu avais lu comme je te l'avais conseillé un cours sur la FFT, tu saurais que ton bruit est situé dans les hautes fréquences, contrairement à ton signal qui est plus dans les basses. Donc oui si tu annules les basses, tu vas voir ton signal disparaître.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [dump IxMin]=sort(x);
    for j=1:length(x)
        if(any(j==IxMin(1:nbFrequencesOK)))
            YfftModif(j)=YfftModif(j); % complètement inutile
        else
            YfftModif(j)=0;
        end
    end
    Il y a plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    YfftModif(1:nbFrequencesOK) = 0;
    Sauf que ce que tu fais est faux, ou disons imcomplet. Je te rappelle (ou pas ) que ton spectre est symétrique.
    Dernière modification par Invité ; 11/10/2012 à 02h50.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Bonsoir,
    Si tu avais lu comme je te l'avais conseillé un cours sur la FFT, tu saurais que ton bruit est situé dans les hautes fréquences, contrairement à ton signal qui est plus dans les basses. Donc oui si tu annules les basses, tu vas voir ton signal disparaître.
    Bonsoir Winjerome et merci.

    oui en effet je sais que le bruit est dans les hautes fréquences mais ici je conserve bien les basses frequences puisque je classe par ordre croissant et je ne garde que les premieres frequences ?
    D'ailleurs mon signal reconstruit est très bien représenté frequentiellement :
    - la forme generale de la courbe est tout à fait respectée et les harmoniques eux sont virés...
    - le seul soucis est que j'ai perdu en amplitude ....

    Citation Envoyé par Winjerome Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    YfftModif(1:nbFrequencesOK) = 0;
    ah oui en effet, tu as tout à fait raison

    Citation Envoyé par Winjerome Voir le message
    Sauf que ce que tu fais est faux, ou disons imcomplet. Je te rappelle (ou pas ) que ton spectre est symétrique.
    en effet j'avais oublié ceci.

    Par contre je ne vois pas trop les consequences :
    - Lorsque je fais un spectre je ne trace que la moitié car si je trace le graph complet j'ai une symétrie inutile. ça OK :-)
    - par contre lorsque je fais une ifft j'ai bien besoin du spectre complet pour reconstruire comme il faut le signal dans le domaine temporelle ?
    ou je ne prends qu'une moitié meme pour le "ifft" ?

    ps :
    par contre ce que je n'ai pas compris dans tout ça c'est pourquoi l'amplitude est modifiée

    EDIT :
    j'ai modifié mon bout de code qu'il y avait plus haut car j'avais fais une petite erreur...
    A présent tout va bien à part la gestion de la symétrie (et mon probleme d'amplitude de mes courbes qui ont beaucoup diminuées -> mais ça doit être lié à ce probleme de symétrie)

    Je tente une explication, peux tu me dire si c'est correct ?
    - je prends mon vecteur de fréquence et je le divise en deux
    - dans ce vecteur j'efface les amplitude des fréquences les plus hautes
    - ensuite j'efface aussi les amplitudes des fréquences symétrique par rapport à la fréquence moyenne ?
    - ensuite j'effectue ma transformée de Fourier inverse ?

    j'ai peut etre un autre soucis : mon vecteur de frequence n'est pas une puissance de 2 ?
    du coup ça peut poser probleme lors de l'utilisation d'une transformée de fourier inverse "ifft" ?
    si oui pk ? (je n'ai pas trop compris pk en general on veut un vecteur multiple de 2)

Discussions similaires

  1. Annuler une suppression
    Par Harbaingan dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/04/2003, 15h59
  2. [DOM] suppression d'un noeud fils xml en JAVA
    Par alexandre54 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 20/03/2003, 10h44
  3. Suppression de la contrainte unique
    Par mika dans le forum SQL
    Réponses: 3
    Dernier message: 20/02/2003, 18h56
  4. [CR] suppression du bas de page
    Par grosjej dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 10/09/2002, 09h58
  5. Réponses: 3
    Dernier message: 12/06/2002, 22h15

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