调用的代码如下,kiss_fftr的输出结果与matlabfft结果完全一致,但是kiss_fftri的输出全部是0.0000,不知道是哪里出了问题,请各位帮忙看看,感谢!
// length是fft点数,timeDmainData指向输入数据
void test(float* timeDomainData, int16_t length)
{
// Create the configurations for FFT and iFFT...
kiss_fftr_cfg fftConfiguration = kiss_fftr_alloc( length, 0, NULL, NULL );
kiss_fftr_cfg ifftConfiguration = kiss_fftr_alloc( length, 1, NULL, NULL );
// Allocate space for the FFT results (frequency bins)...
kiss_fft_cpx* fftBins = (kiss_fft_cpx*)malloc( (length)*sizeof(kiss_fft_cpx) );
// FFT...
kiss_fftr( fftConfiguration, timeDomainData, fftBins );
for (int i=1; i<length/2; i++)
{
fftBins[length-i].r = fftBins[i].r;
fftBins[length-i].i = -fftBins[i].i;
}
for (int i=0; i<length; i++)
{
pcpx(fftBins);//用来输出复数的自定义函数,这里fft结果与matlab一致
fftBins++;
}
// iFFT...
kiss_fftri( ifftConfiguration, fftBins, timeDomainData );
for (int i=0; i<length; i++)
{
printf("%f \n",(*timeDomainData));//输出结果全部是0.0000和-0.0000
timeDomainData++;
}****
free(fftConfiguration);
free(ifftConfiguration);
free(fftBins);
}