1
首先我对我的英语不好,我很抱歉...FFTW3落后对我不起作用
所以这里是我的问题。我用一个简单的输入信号测试了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只是满0,而不是1和0 ...
那么,我的代码有什么问题?
谢谢:)
你还没有执行第二个计划? – 2013-02-25 20:44:43
另请注意,在FFTW中,前进和后退通常会使您得到缩放结果,因为一些归一化被遗漏,可能需要作为后期变换步骤完成。 FFTW文档更深入地解释了...... – twalberg 2013-02-25 20:51:46
@OliCharlesworth:如果您不会将其作为答案发布,我会发布它以“窃取”您的声誉并教您上一堂课。 :-) – 2013-02-25 21:24:01