FFTW : FFT et FFT inverse
Salut !
J'ai un petit problème avec FFTW...
Je souhaite faire une FFT normale des traitements sur les coefficients puis une FFT inverse (en gros pour faire un filtrage fréquenciel). Le problème est que quand je fais ma FFT puis ma FFT inverse sans faire de modifications sur les coefficients je ne retrombe pas sur les valeurs initiales ...
Voici mon code, est-ce quelqu'un peut m'aider ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
double* in;
fftw_complex *out;
fftw_plan fft;
fftw_plan fftInverse;
in = (double*) fftw_malloc(sizeof(double) * nbCol);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * nbCol);
fft = fftw_plan_dft_r2c_1d(nbCol, in, out, FFTW_ESTIMATE);
for(int j=0; j<nbCol; j++) in[j] = buffer[j];
fftw_execute(fft);
fftInverse = fftw_plan_dft_c2r_1d(nbCol, out, in, FFTW_ESTIMATE);
fftw_execute(fftInverse);
for(int j=0; j<nbCol; j++) buffer[j] = in[j];
fftw_destroy_plan(fft);
fftw_destroy_plan(fftInverse);
fftw_free(in); fftw_free(out); |
Et voilà les résultats que j'obtient :
Code:
1 2 3 4 5 6
|
Echantillon initial :
18.0881 - 25.4002 - 24.0148 - 9.39039 - 1.61638 - 7.31219 - 11.9304 - 7.08128 - 2.0782 - 5.31096 - 11.7765 - 12.8541 - 8.38978 - 5.61884 - 8.62069 - 15.3171 - 17.4723 - 9.62131 - 0.846675
Echantillon final sans traitement après FFT inverse :
343.673 - 482.605 - 456.281 - 178.417 - 30.7112 - 138.932 - 226.678 - 134.544 - 39.4858 - 100.908 - 223.753 - 244.227 - 159.406 - 106.758 - 163.793 - 291.025 - 331.974 - 182.805 - 16.0868 |