我使用的是TI的C6713DSP,在例程中有一个simfft的例程,仿照这个历程可以对音频信号进行FFT变换,其中使用的就是dspc67x.lib库函数中的DSPF_sp_cfftr2_dit()FFT变换函数,它采用的是基2的时间抽取算法,我用这个实现了信号的FFT变换,现在想用它实现IFFT变换,即由频谱还原回原始信号,这要怎么做呢?我的程序如下,可是结果总是不对,希望知情者给解答一下,谢谢!
//fft开始
for(i=0;i<NX;i++)
{
input_l[i*2]=Buffer_iir_l[i];//时域信号的实部
input_l[i*2+1]=0;//时域信号的虚部,设为0
}
DSPF_sp_cfftr2_dit(input_l, w, NX);//fft变换,结果以位倒序形式存放
DSPF_sp_bitrev_cplx(input_l,iData,NX); //再对结果进行倒序
for(i=0;i<NX/2+1;i++)
{
//计算频谱的模值
rlt[i]=sqrtf(input_l[2*i]*input_l[2*i]+input_l[2*i+1]*input_l[2*i+1]);
}
//fft结束,ifft开始
for(i=0;i<NX;i++)
{
output_l[i*2]=input_l[i*2];
output_l[i*2+1]=0;
}
DSPF_sp_cfftr2_dit(output_l, w, NX);//w为旋转因子,已从例程中得到
DSPF_sp_bitrev_cplx(input_l,iData,NX);
//位倒序函数,iData已知,但具体含义不太明白
for(i=0;i<NX;i++)
{
Buffer_iir_l[i]=output_l[i*2];//取实部作为输出信号
}
for(i=0;i<512;i++)
{
gBufferXmtPing[i]=(int)(Buffer_iir_l[i]);
}
//ifft结束 |