Bonjour,

J'apprends à utiliser la librairie FFTW3 pour réaliser des transformées de Fourier, et je bloque sur la transformée inverse.

J'apprends sur un exemple simple, où je ne donne en entrée qu'un signal continue. J'obtiens correctement la FFT avec en sortie une seule composante en f = 0. A partir de se signal fréquentiel, je souhaiterais retrouvé mon signal continue de départ, mais je n'y arrive pas. Voici mon code :

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
 
fftw_complex* imgIn;
    fftw_complex* imgIn2;
    fftw_complex* imgOut;
    fftw_plan plan;
 
    int taille = 100;
    int i;
 
	 //Allocation des entrées et sorties
    imgIn = fftw_malloc(sizeof(fftw_complex)*taille);
    imgIn2 = fftw_malloc(sizeof(fftw_complex)*taille);
    imgOut = fftw_malloc(sizeof(fftw_complex)*taille);
 
    //Remplissage des données d'entrées pour le calcul de la FFT
    for(i = 0 ; i < taille ; i++){
    	imgIn[i][0] = 1.0;
    	imgIn[i][1] = 0.0;
    }
 
    //Plan d'execution
    plan = fftw_plan_dft_2d(taille/10, taille/10, imgIn, imgOut, FFTW_FORWARD, FFTW_ESTIMATE);
 
	//Execute la FFT
	fftw_execute(plan);
 
	//Inverse
    plan = fftw_plan_dft_2d(taille/10, taille/10, imgOut, imgIn2, FFTW_BACKWARD, FFTW_ESTIMATE);
 
	for(i = 0 ; i < taille ; i++){
		printf("%d : %g\n%d : %g\n", i, imgIn2[i][0], i, imgIn2[i][1]);
	}
Mon tableau imgIn2 n'est composé que de 0... quelqu'un pour m'aider ?

Merci