Dft e trasformata di Fourier continua

Messaggioda lucagalbu » 01/10/2010, 10:59

Ciao!
Devo creare un programma in C/C++ che calcoli la trasformata di Fourier continua di una gaussiana centrata in x=5. Per fare questo considero la gaussiana ristretta all'intervallo x=-20 fino a x=30 (cioè, la finestra nella quale eseguo il sampling è larga T=50) e poi ne considero N=500 valori discreti presi con uno step di T/N=0.5.
Poi usando la libreria FFTW calcolo la dft diretta e da questa risalgo alla trasformata continua. E fin qui tutto bene; ottengo una gaussiana centrata nell'origine.
Il problema è che adesso voglio calcolare la dft inversa di questa gaussiana centrata nell'origine. Mi aspetto di ritrovare la funzione di partenza (la gaussiama centrata in x=5), ma invece ottengo una specie di U centrata nell'origine.
Il codice è questo:

Codice: Seleziona tutto
        double x;
   int i;
   
   for(i=0, x=-20; i<N; i++, x+=(T/N))   //Sample the Gaussian with time-step T/N  (T=50 'cause I sample from x=-20 to x=30. N=500=# of sampling points)
   {   
      in2[i][0]   =   20*exp(-(x-5)*(x-5));          //Real part
      in2[i][1]   =   0;                            //Imaginary part
   }
   fftw_execute(fwd);   //Calculate the direct dft of the sequence in in2 and store the result in out2

   for(i=0, x=0; i<N; i++, x+=T/N)   //Copy the result from out2 to in1
   {   
      in1[i][0]   =   out2[i][0];   //Real part
      in1[i][1]   =   out2[i][1];   //Imaginary part
   }
   fftw_execute(rew);              //Execute the inverse Dft of the sequence in in1 and store the result in out1
      
   
   //Draw the result with the function glVertex3f(x,y,z)
   glBegin(GL_LINE_STRIP);
      for(i=N/2; i<N; i++)    glVertex3f((i-N)*2.*PI/T, 1./N*sqrt(out1[i][0]*out1[i][0]+out1[i][1]*out1[i][1]), 0);
      for(i=0; i<=N/2; i++)    glVertex3f(i*2.*PI/T, 1./N*sqrt(out1[i][0]*out1[i][0]+out1[i][1]*out1[i][1]),0);
   glEnd();


Dov'è che sbaglio?
夢だけは誰も奪えない心の翼だから
lucagalbu
Junior Member
Junior Member
 
Messaggi: 190
Iscritto il: 23/04/2007, 17:59
Località: Lecco

Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti