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 ?
Et voilà les résultats que j'obtient :
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 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);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager