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 :

ERREUR dans les valeurs de la fft


Sujet :

Signal

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 96
    Points : 45
    Points
    45
    Par défaut ERREUR dans les valeurs de la fft
    bonjour ,
    j'ai toujours un problème à realiser la fft d'un signal et je ne sais pas ce qui ne va pas dans mon code.
    Par exemple ici j'essaie de faire la fft d'un simple signal carré de fréquence 1Hz et avec une fréquence d'échantillonnage Fe=1000 .
    j'utilise un fenetre de Hanning de taille 4096
    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
    f=1;  %frequence du signal
    fe=1000;%frequence d'echantillonnage
    N=4096; %longueur du signal
    L=N/fe;
    nb=200;
    t=1/fe:1/fe:L;
    x=square(2*pi*t*f); %signal carré de frequence 1hz
    subplot(2,1,1);
    plot(x);
    fn=hanning(N);  %fenetre de hanning
    ft=fftshift(abs(fft(x'.*fn)));%fft
    ft=ft(floor(length(ft)/2):length(ft)); %la moitié de la fft
    w=fe/N:fe/N:fe/2; 
    subplot(2,1,2);
    plot(w(1:nb),ft(1:nb));
    Normalement ça devrait donner un pic au 1Hz et des harmoniques dans les 2Hz, 3Hz ... (périodiques espacées de 1Hz) si j'ai bien compris .
    Le problème, voilà ce que j'obtiens .

    un pic au 1.4 , au 3.4, au 5.3 ..
    je ne comprends pas à quoi est du cette inexactitude dans les valeurs
    Merci de bien vouloir m'aider . Je suis perdue ...

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 111
    Points
    111
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ft=ft(floor(1+length(ft)/2):length(ft));
    %la moitié de la fft
    Vous aviez un échantillon de trop.

    Les fréquences commencent à zéro.

    N=4000 vous donnera quelque chose de plus net (les pics vont tomber sur la grille de fréquence)

    Enfin, stem au lieu de plot lorsqu'on a peu de points (relier les points est trompeur).

    Vous devriez maintenant lire 1,3,5,7...

    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
    f=1;  %frequence du signal
    fe=1000;%frequence d'echantillonnage
    N=4000; %longueur du signal
    L=N/fe;
    nb=100;
     
    t=1/fe:1/fe:L;
    x=square(2*pi*t*f); %signal carré de frequence 1hz
    subplot(2,1,1);
    plot(t,x); ylim ([-2,+2]);
     
    fn=hanning(N);  %fenetre de hanning
    ft=fftshift(abs(fft(x)));%fft
     
    ft=ft(floor(1+length(ft)/2):length(ft)); %la moitié de la fft
     
     
    w=0:fe/(N-1):fe/2; 
    subplot(2,1,2);
    stem(w(1:nb),ft(1:nb));

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    bonjour,
    je vous remercie vraiment de votre réponse .
    mais c'est justement là mon problème je pensais devoir avoir un pic au 1 hz au 2 3 4 5...
    c'est à dire de période 1 .
    corrigez moi si je dis faux. et là j'ai un pic au 1 3 5 7
    je ne comprends pas pourquoi la période est de 2

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 111
    Points
    111
    Par défaut
    C'est tout-à-fait normal. Un signal carré n'a pas d'harmoniques paires.

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    vous pourriez m'expliquez encore svp ou me donner un lien de cours ou c'est expliqué je ne comprend pas ce que ça veut dire le fait que les harmoniques ne soit pas paires
    Merci de votre aide

    le pire c'est ce que j'obtiens pour un signal carré de fréquence 1.4 hz
    voici ce que j'ai comme fft des pics au 0.2 0.6 1 1.4 1.8 ....
    c'est à n'y rien comprendre

    apparemment j'ai rien compris à la transformée de Fourier
    Merci de m’éclairer

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 111
    Points
    111
    Par défaut
    Ca résulte de sa décomposition en série de Fourier :

    Nom : a1195833b9f2706a62a2d8a889b09cab.png
Affichages : 1523
Taille : 3,7 Ko

    Article Wikipedia

    2*pi*f*t est la fréquence cyclique, donc l'harmonique 1
    6*pi*f*t est 3x la fréquence cyclique, donc l'harmonique 3
    10*pi*f*t est 5x la fréquence cyclique, donc l'harmonique 5
    etc.

    Le code que j'ai donné au-dessus donne ceci :

    Nom : spectre_carre.png
Affichages : 2793
Taille : 16,4 Ko

  7. #7
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    d'accord je vous remercie beaucoup c'est bon j'ai compris

  8. #8
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    par contre auriez vous une idée comment je peux faire la ifft du signal pour revenir au temporel sachant que je multiplie par une fenêtre de hamming et que je fais la valeur absolue??
    je ne sais pas quel paramètres donner à la ifft et comment contrer le fait que j'eus fait la valeur absolue
    Merci encore

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour

    L'utilisation de la valeur absolue est utile pour la représentation graphique mais pour effectuer la ifft il faut par contre garder l'ensemble des valeurs de ta fft, et probablement utiliser l'option 'symmetric' dans ton cas.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  10. #10
    Membre régulier
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 111
    Points
    111
    Par défaut
    ifft ( fft (x) ) = x est une identité.

    ifft ( abs ( fft (x) ) ) = x n'est pas une identité. De plus, abs est irréversible (vous avez perdu de l'information). Aucune chance de retourner au signal d'origine. Il faut aussi garder l'ensemble des valeurs comme dit Gooby, ou encore le restorer par conjugaison si le signal est réel.

    ifft ( fft ( hanning (x) ) ) = hanning (x) est aussi une identité.

    Si le but est de revenir au signal de départ, il n'y a pas besoin de pondération de Hamming. Celle-ci n'est utile qu'en estimation spectrale, lorsque le signal à analyser est plus long que la fenêtre d'analyse. On est alors obligé d'en couper un morceau, et cette coupure introduit des discontinuités qui pollueront le spectre. On tente de minimiser cette pollution en adoucissant la coupure par une fonction de Hamming, ou autre.

    C'est facile à visualiser : prenez un sinus. Coupez-en un morceau n'importe où. Prenez ce morceau et répétez-le à l'infini. Vous voyez que le sinus est "brisé", il ne se raccorde pas (à moins que vous ayiez pris soin d'en couper un nombre entier de périodes). Ce que vous analysez est ce sinus brisé, et son spectre n'est pas celui d'un sinus.

    La fenêtre de Hamming va gommer les défauts mais ça ne sera pas parfait. C'est pour ça qu'on parle d' «estimation». Si vous voulez le spectre exact d'un signal périodique c'est trés simple, il suffit de faire coller la fenêtre d'analyse à sa période (ou a un multiple) et de ne pas utiliser de fonction de Hamming. Vous aurez alors le spectre du signal carré mathématiquement exact.

    En résumé : si vous pouvez faire en sorte que votre fenêtre d'analyse (taille du buffer) soit égale à une période ou un multiple de la période => vous êtes en "analyse synchrone", pas de Hanning, pas de pollution, résultat exact. Sinon => vous êtes en "analyse court terme", pollution, Hanning, résultat estimé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacement des espaces dans les valeur d'un tableau
    Par calimero642 dans le forum Langage
    Réponses: 10
    Dernier message: 12/05/2006, 18h56
  2. [LDAP] Problèmes d'accent dans les valeurs
    Par Jack_le_Boulet dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 28/04/2006, 20h56
  3. Gestion d'erreur dans les procédure
    Par speedy1496 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/01/2006, 12h02
  4. Erreur dans les locale settings
    Par narmataru dans le forum Debian
    Réponses: 9
    Dernier message: 16/11/2004, 20h51
  5. [CR] doublon dans les valeurs
    Par Gaëtane dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/06/2004, 15h25

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