Problème transformée de Fourier discrète
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Problème transformée de Fourier discrète



  1. #1
    doul11

    Problème transformée de Fourier discrète


    ------

    Bonjour,

    Je suis en train de faire un logiciel d'analyse spectrale, le logiciel en lui même n'a aucun intérêt c'est juste un prétexte pour apprendre et pratiquer le C++ et la transformée de Fourier discrète.

    Tout allais bien dans le meilleur des modes, je tapais du code, chassais les bugs et j'améliorais mon programme, pour voir si tout marchais bien j'utilisais comme signal une simple sinusoïde et une fonction de transfert unité (pièce jointe 1), ensuite j'ai implémenté le signal carré, je fais un test un peut plus complexe avec un signal de 0 a 5v on peut voir le magnifique résultat en pièce jointe 2, puis j'ai ajouté le signal triangle : pas de problèmes et pour finir le signal dent de scie et là c'est le drame ! (pièce jointe 3) la phase du signal de sortie est inversé, si j'applique la fonction de transfert qui inverse la phase je retrouve les signaux d'entrée de de sortie en phase.

    Quel est le problème avec le signal en dent de scie ? bien sur si je colle un signe moins là ou il faut le signal dent de scie ce trouve en phase, mais tout les autre signaux sont inversés.


    Le code de la transformée :
    Code:
    void View::FT()
    {
    int k,n,N=i_npoint;
    double a,b;
    
    for(k=N;k>N/2;k--)
    	{
    	
    	a=0;
    	for(n=0;n<N;n++)
    		{
    		a=a+(complex_time[n].rho * cos((-2*PI*k*n/N)+complex_time[n].phi) );
    		}
    	
    	b=0;
    	for(n=0;n<N;n++)
    		{
    		b=b+(complex_time[n].rho * sin((-2*PI*k*n/N)+complex_time[n].phi) );
    		}
    	
    	complex_freq[N-k].rho=sqrt((a*a)+(b*b));
    	complex_freq[N-k].phi=acos(a/complex_freq[N-k].rho);
    	
    	complex_freq[N-k].rho=(1/sqrt(N))*complex_freq[N-k].rho;
    	
    	if(k!=N){complex_freq[N-k].rho=complex_freq[N-k].rho*2;}
    	}
    }

    Si quelqu'un peut m'aider, merci d'avance.

    -----
    Images attachées Images attachées
    Dernière modification par doul11 ; 28/01/2011 à 09h23.
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  2. #2
    invite6dffde4c

    Re : Problème transformée de Fourier discrète

    Bonjour.
    Je ne sais pas si c'est la source de vos problèmes, mais je vois que vous calculez un angle en utilisant "acos()".
    De toute évidence vous ne connaissez la merveilleuse fonction "atan2(y, x)", héritée du fortran. Cette fonction vous donne l'argument sur les 4 quadrants, ce qui ne font pas ni asin ni acos.
    Au revoir.

  3. #3
    obi76

    Re : Problème transformée de Fourier discrète

    Bonjour,

    pour compléter ce qu'a judicieusement dit LPFR, l'arcosinus de c'est mais c'est AUSSI . Comme il vous a été judicieusement dit au #2, vous pouvez utiliser une fonction dédiée, mais aussi simplement le multiplier par le signe de l'arcsin (du moins c'est comme ça que je faisais).

    Cordialement,
    \o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/

  4. #4
    doul11

    Re : Problème transformée de Fourier discrète

    Citation Envoyé par LPFR Voir le message
    De toute évidence vous ne connaissez la merveilleuse fonction "atan2(y, x)", héritée du fortran. Cette fonction vous donne l'argument sur les 4 quadrants, ce qui ne font pas ni asin ni acos.
    Effectivement je ne connaissait pas cette fonction, j'ai donc remplacé le acos par atan2 dans la transformée directe et inverse : ça fonctionne a merveille !

    Par contre je ne comprends pas pourquoi ça ne fonctionnais pas qu'avec le signal dent de scie ? je soupçonne que ça soit du au fait que les autres signaux n'ont que des harmoniques impaires ?
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. transformée de Fourier discrète
    Par invite24ceb369 dans le forum Électronique
    Réponses: 2
    Dernier message: 27/10/2010, 16h20
  2. Problème avec la transformée de Fourier discrète
    Par invite5a96bed1 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 03/05/2010, 21h17
  3. probleme transformée de fourier discrète
    Par invite67614aac dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 21/01/2009, 00h22
  4. Transformée de Fourier Discrète
    Par inviteeb8e8d41 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 09/01/2008, 17h33
  5. Transformée de Fourier discrète en C++
    Par invitef563f708 dans le forum Logiciel - Software - Open Source
    Réponses: 14
    Dernier message: 12/01/2005, 15h41