1

最初に私の悪い英語をお詫びします...

これが私の問題です。FFTW3ライブラリを、単純な入力信号、連続的な入力信号でテストしています。次に、FFTを計算して、良い結果を取得します。周波数0の信号だけで、他のすべては0になります。

次に、後方FFTを使用して入力を戻したいのですが、機能しません。これが私のコードです:

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]);
}

ご覧のとおり、私は通常のFFTを実行してから、それを逆にしようとしています。問題は、私の出力imgIn2が1と0ではなく0でいっぱいになっていることです...

では、私のコードの何が問題になっていますか?

ありがとうございました :)

4

1 に答える 1

2

コードは 2 番目のプランを実行しません。

于 2013-02-26T00:14:30.890 に答える