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

Traitement du signal Discussion :

Transformée de Fourier


Sujet :

Traitement du signal

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte Sécurité
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Sécurité

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Transformée de Fourier
    Bonjour a tous,

    j'ai quelques questions bêtes concernant les transformes de Fourier mais je ne trouve de réponse nul part:

    1.Si je fais une ifft(fft(sinus)) j'obtiens des nombres complexes. Est-ce normal ? Si je veux "extraire" un sinus réel, est-ce que prendre les parties réelles des nombres complexes est suffisant ? Ou faut il prendre des modules ?

    2. Si je fais du zero padding il faut que j'efface l'intégralité la partie située après fs/2 pour que ça marche. Est-ce normal ? Je m'explique: je fais une FFT de N=4 points par exemple. Je veux interpoler deux fois. Donc imaginons que les coefficients de ma FFT soient: [ a b b a ] (symetrie du sinus autour de N/2 donc). Bon je fais du zero padding et ca me donne: [ a b 0 0 0 0 b a ]. Ben quand je prends la iFFT j'ai pas un sinus... Pour avoir un sinus je dois faire: [ a b 0 0 0 0 0 0 ]. Pourquoi ? je fais une erreur quelque part ?

    2.5. Concernant la symétrie autour de fs/2, a quoi est-elle physiquement due ? Aux hautes fréquences introduites par les "escaliers" dus a l'échantillonnage ?

    3. Concernant les fenêtres d'apodisation. Si je veux par exemple obtenir le spectre d'un signal qui sort d'un CD, quel est la meilleure fenetre ? hanning ? hamming ? blackmann ? Et quel est le meilleur recouvrement ?

    Merci a tous de vos réponses !

    Laurent

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Bonjour,

    1) A priori, la partie imaginaire doit être très faible et, selon moi, due au arrondis de calcul. La partie réel doit être proche de ton signal de départ.

    2)Je comprend pas trop ce que tu cherche à faire. La technique du zero padding consiste normalement à ajouter des zéro à la fin de ton signal temporel pour augmenter la résolution de ta fft. Dans ce que tu fait, la fréquence max restant inchangée, tu augmente la résolution de ta fft à la main. En faisant la ifft, tu aura un signal temporel plus long, mais cela ne doit pas t'apporter grand chose étant donné qu'il est périodique.

    Si ton signal a deux composante spectrale, tu n'es pas sensé obtenir un sinus pure avec la ifft.

    2,5) C'est du à l'échantillonnage qui périodise le spectre avec une période e Fe.

    3)Tout dépend de ce que tu veux voir...

    Yann

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Architecte Sécurité
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Sécurité

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Re-

    Quelques compléments:

    2. a ce que j'ai pu lire sur le web, on peut faire les deux. Le zéro padding temporel augmente la résolution de la FFT tandis que le zero padding fréquentiel augmente la résolution dans le domaine temporel. En anglais c'est la "bandlimited interpolation". Ils disent d'ailleurs que c'est l'interpolation idéale

    Quelques liens (marchent au 16 juillet 2009):
    - http://www.dspguru.com/howto/tech/zeropad2.htm
    - http://ccrma-www.stanford.edu/~jos/s...rpolation.html (a la fin de la page),
    - http://home.flash.net/~bobgh/bandlimited.htm

    2.5. Oui, mais ça correspond a quel phénomène physique ? Pourquoi la discrétisation du signal périodise le spectre ?

    3. Ben pour faire une "bandlimited interpolation "

    Merci,

    Laurent

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par essomba84 Voir le message
    Concernant la symétrie autour de fs/2, a quoi est-elle physiquement due ? Aux hautes fréquences introduites par les "escaliers" dus a l'échantillonnage ?

    On observe normalement une "conjugaison complexe" de part et d'autre de la fréquence de Nyquist. Mais comme ton signal de départ est réel (partie imaginaire = 0), alors on observe une symétrie (car un réel est égal a son conjugué complexe).

    Physiquement, quand tu dépasses la fréquence de Nyquist tu "loupes" des variations (passages par zéro) de ton signal. Tu va alors obtenir les mêmes valeurs aux points échantillonnage, alors que le signal a une fréquence différente.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    2) D'accord! Effectivement, tu ne reste pas à fréquence max équivalente et cela reviens à multiplier la fréquence d'échanillonage. Je ne suis pas rentrer dans le détail, mais je pense que tu ne peux pas rentrer n'importe quelle quantité de zero étant donné que tu travaille avec la transformé rapide. Tu a intérêt à rester sur des puissance de 2 pour le nombre de point.

    2.5) Echantilloner un signal revient à le multiplier par un peigne de diracs. La transformée d'un peigne de diracs est un peigne de diracs. La multiplication dans le domaine temporel devient une convolution dans le domaine fréquentiel. Tout cela implique que la transformée d'un signal échantillonné est périodique.

    3)Je ne sais pas. Fais plusieurs essais et vois... La fenêtre naturelle a des lobes secondaires important, mais la largeur des lobes est faible. Les autres ont des lobes secondaires plus atténués, mais avec les largeurs de lob plus importantes... Il me semble que les fenêtres sont plutôt utilisées pour faire de l'analyse et pas tellement du traitement...

    Yann

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Architecte Sécurité
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Sécurité

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Physiquement, quand tu dépasses la fréquence de Nyquist tu "loupes" des variations (passages par zéro) de ton signal. Tu va alors obtenir les mêmes valeurs aux points échantillonnage, alors que le signal a une fréquence différente.
    Oui je suis d'accord mais je génère un sinus pur que j'échantillonne sous octave... Donc je suis absolument sur qu'il n'y a pas de fréquences > fs/2 ni même de fréquences autre que mon signal. Et malgré ca le spectre est double...

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Architecte Sécurité
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Sécurité

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par yann.falevoz Voir le message
    2) D'accord! Effectivement, tu ne reste pas à fréquence max équivalente et cela reviens à multiplier la fréquence d'échanillonage. Je ne suis pas rentrer dans le détail, mais je pense que tu ne peux pas rentrer n'importe quelle quantité de zero étant donné que tu travaille avec la transformé rapide. Tu a intérêt à rester sur des puissance de 2 pour le nombre de point.
    Well, c'est ce que je fais. Mais ça ne m'explique pas pourquoi je doit enlever la partie symétrique du spectre pour que ca marche...

    Citation Envoyé par yann.falevoz Voir le message
    2.5) Echantilloner un signal revient à le multiplier par un peigne de diracs. La transformée d'un peigne de diracs est un peigne de diracs. La multiplication dans le domaine temporel devient une convolution dans le domaine fréquentiel. Tout cela implique que la transformée d'un signal échantillonné est périodique.
    Oui, je suis d'accord... en suivant l'algo de la FFT je le vois bien Mais physiquement ca correspond a quoi ? Ces fréquences après fs/2 existent reellements ? Si oui d'ou sortent elles ? Sinon pourquoi les voit on si elles n'existent pas ?

    Citation Envoyé par yann.falevoz Voir le message
    3)Je ne sais pas. Fais plusieurs essais et vois... La fenêtre naturelle a des lobes secondaires important, mais la largeur des lobes est faible. Les autres ont des lobes secondaires plus atténués, mais avec les largeurs de lob plus importantes... Il me semble que les fenêtres sont plutôt utilisées pour faire de l'analyse et pas tellement du traitement...
    Yann
    Qu'est-ce que la fenêtre naturelle ? la rectangulaire ? Mais quid des discontinuités en bordure de fenêtre ?

    Merci,

    Laurent

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour.
    2.5. Concernant la symétrie autour de fs/2, a quoi est-elle physiquement due ? Aux hautes fréquences introduites par les "escaliers" dus a l'échantillonnage ?
    Théorème de Shannon et repliement de spectre.
    Bien expliqué là :

    http://www.mesures.com/archives/760s...tillonnage.pdf

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Visiblement il te manque toutes les bases...

    Mais ça ne m'explique pas pourquoi je doit enlever la partie symétrique du spectre pour que ca marche...
    Il y a deux possibilités :
    • le logiciel que tu utilise est buggé
    • tu l'utilise mal

    Car c'est complètement faux.

    Sous Scilab :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    //création du vecteur temps et du vecteur fréquence
    Nbp=32;
    dt=0.02;
     
    t=linspace(0,dt,Nbp+1);
    t=t(1:Nbp);
     
    f=linspace(0,Nbp/dt,Nbp+1);
    f=f(1:Nbp);
     
    //création d'un signal sinusoïdal
    s=sin(2*%pi*50*t);
     
    //Calcul de sa FFT
    S=1/Nbp*fft(s);
     
    //S1 : S auquel on supprime les fréquences supérieures à fe/2
    S1=S;
    S1(32)=0;
     
    //Calcul des signaux par transformé inverse
    s1=Nbp*ifft(S);
    s2=Nbp*ifft(S1);
     
     
    //affichage
    subplot(3,1,1);
    plot(t,s);
     
    subplot(3,1,2);
    plot(f,abs(S));
     
    subplot(3,1,3);
    plot(t,[real(s1);real(s2)]);
    Voilà ce qu'on obtient :


    La première courbe est le signal de départ. La seconde est le module de la FFT de ce signal. Sur le troisième graphe tu a en bleue le signal obtenu par ifft et en vert le signal obtenu par ifft en supprimant les fréquences supérieures à fe/2. Tu a supprimé la moitié de l'énergie... Ton sinus a donc une amplitude moitié...

    Il faut connaitre les outils pour pouvoir les utiliser correctement.

    La transformé de Fourrier est un fonction mathématique qui associe à une fonction s(t), t appartenant à [-inf,inf], une fonction S(f), f appartenant à [-inf,inf]. Autrement dit, si tu calcul la transformé de Fourrier d'un sinus continu, tu a deux pics de dirac, un à la fréquence de ton sinus, F1, et l'autre à -F1, chacun d'entre eux ayant la moitié de l'énergie de ton sinus.

    Sur un ordinateur tu ne peux pas traiter des signaux continus. Tu travaille donc sur des signaux échantillonnés. Il y a un outil qui s'appelle la transformé de Fourrier discrète (DFT) qui permet de calculer la TF d'un signal échantillonné. La FFT est un algorithme rapide pour faire ce calcul sur des signaux ayant un nombre de points égal à une puissance de deux.

    Comme je te l'ai dis précédemment, la TF d'un signal échantillonné est périodique. C'est mathématique! Tu retrouve donc les fréquences négatives entre fe/2 et fe. Les algos de DFT et de FFT donne ces fréquences plutôt que les fréquences négatives, mais c'est la même information.

    Pour le zero pading, ça marche très bien :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    //création du vecteur temps et du vecteur fréquence
    Nbp=32;
    dt=0.02;
     
    t=linspace(0,dt,Nbp+1);
    t=t(1:Nbp);
     
    t1=linspace(0,dt,2*Nbp+1);
    t1=t1(1:2*Nbp);
     
    f=linspace(0,Nbp/dt,Nbp+1);
    f=f(1:Nbp);
     
    f1=linspace(0,2*Nbp/dt,2*Nbp+1);
    f1=f1(1:2*Nbp);
     
    //création d'un signal sinusoïdal
    s=sin(2*%pi*50*t);
     
    //Calcul de sa FFT
    S=1/Nbp*fft(s);
     
    //Le zero padding
     
    S1=[S(1:Nbp/2),zeros(1,Nbp),S(Nbp/2+1:Nbp)];
     
    //La transformé inverse
    s1=2*Nbp*ifft(S1);
     
    //affichage
    subplot(2,2,1);
    plot(t,s);
     
    subplot(2,2,2);
    plot(f,abs(S));
     
    subplot(2,2,3);
    plot(t1,s1);
     
    subplot(2,2,4);
    plot(f1,abs(S1));
    On obtient les courbes suivantes :


    En tournant dans le sens des aiguilles d'une montre :
    • Le signal de départ
    • Le module de sa TF
    • Le module après zero padding
    • Le signal après ifft


    Fenêtre naturelle = fenêtre rectangulaire.
    Pour le reste, à toi de tester...

    Yann
    Images attachées Images attachées   

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par essomba84 Voir le message
    Oui je suis d'accord mais je génère un sinus pur que j'échantillonne sous octave... Donc je suis absolument sur qu'il n'y a pas de fréquences > fs/2 ni même de fréquences autre que mon signal. Et malgré ca le spectre est double...
    Ah. Je viens de comprendre ton problème grâce au post de yann.falevoz

    Effectivement, ce que tu observes ce sont les fréquences négatives car les fonctions de la base de Fourier sont exp(-i.w.t) avec des "w" positifs et négatifs.

    Ta sinusoïde "sin(w.t)" se décompose donc à moitié sur la fonction de base avec un "w" positif et à moitié sur la fonction de base avec un "w" négatif. D'où la symétrie observée.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour.

    Théorème de Shannon et repliement de spectre.
    Bien expliqué là :

    http://www.mesures.com/archives/760s...tillonnage.pdf
    Super ce recueil d'articles!

    Yann

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Architecte Sécurité
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Sécurité

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup a tous.

    J'ai compris mon erreur... en fait je faisais une symétrie autour de fs/2 au lieu de juste ajouter les zéros au milieu... bref je me suis fait des nœuds quoi...

    Sinon dans le code que yann a poste, il y a:
    S=fft(..)/N;

    puis plus loin:
    F=N * coef oversampling * ifft(...).

    Je voudrais savoir si c'est équivalent a
    S=fft(...);

    puis F= oversampling * ifft(...).

    Merci et oui, Yann, je manque de bases, je l'avais bien précisé: question de *débutants* Merci du temps que tu as passé a faire ces courbes

    Une autre question: dans le cadre de DAC d'ordre 0 (qui maintiennent la précédente sortie jusqu'à l'échantillon suivant) je voudrais savoir comment se matérialise spectralement ces marches d'escalier.

    Merci a tous,

    Laurent

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Sinon dans le code que yann a poste, il y a:
    S=fft(..)/N;

    puis plus loin:
    F=N * coef oversampling * ifft(...).

    Je voudrais savoir si c'est équivalent a
    S=fft(...);

    puis F= oversampling * ifft(...).
    Si tu ne t'intéresse pas a la courbe dans le domaine fréquentiel c'est pareil. C'est un coef de normalisation et il y a plusieurs écoles. Ce que je trouve bien avec celui là, c'est que quand tu regarde le module du spectre sur le premier groupe de graphes, les pic ont une amplitude de 0,5 soit chacun la moitié de l'amplitude du sinus.

    Une autre question: dans le cadre de DAC d'ordre 0 (qui maintiennent la précédente sortie jusqu'à l'échantillon suivant) je voudrais savoir comment se matérialise spectralement ces marches d'escalier.
    Ben, on peut dire que c'est une série de porte donc spectralement, ça va être plein de sinus cardinaux qui vont s'ajouter. Mais si tu envoie ça sur de HP, il ne faux pas oublier que ce sont des filtres passe bas...

    Yann

Discussions similaires

  1. Transformée de Fourier Mellin
    Par meera dans le forum Scilab
    Réponses: 6
    Dernier message: 04/08/2008, 14h46
  2. Transformée de fourier rapide
    Par Aida dans le forum Traitement du signal
    Réponses: 23
    Dernier message: 03/01/2006, 15h14
  3. transformée de fourier
    Par Mat 74 dans le forum Traitement du signal
    Réponses: 8
    Dernier message: 15/05/2005, 19h26
  4. Transformée de fourier
    Par rstaros dans le forum C
    Réponses: 5
    Dernier message: 09/05/2005, 20h40

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