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
| float* in;
float* reOut;
float* imOut;
fftw_complex* spatial_repr;
fftw_complex* frequency_repr;
fftw_plan plan;
spatial_repr = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*512);
frequency_repr = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*512);
/*On remplit la structure qui sera utilisée par fftw*/
for(i=0;i<512;i++)
{
spatial_repr[i][0] = in[i];
spatial_repr[i][1] = 0.0f;
}
/*on calcule le plan d'exécution*/
fftw_plan_dft_2d(512, 512, spatial_repr, frequency_repr, FFTW_FORWARD, FFTW_ESTIMATE);
/*on effectue la transformée de Fourier*/
fftw_execute(plan);
/*on retranscrit le résultat en 2 images, l'une représentant la partie réelle, l'autre
la partie imaginaire*/
for(i=0;i<512;i++)
{
reOut[i]=frequency_repr[i][0];
imOut[i]=frequency_repr[i][1];
}
/*on détruit les objets*/
fftw_destroy_plan(plan);
fftw_free(spatial_repr);
fftw_free(frequency_repr); |