Board logo

标题: 如何使用TIC6713DSP库函数中的fft函数做ifft变换? [打印本页]

作者: cuicaifeng    时间: 2013-6-21 14:40     标题: 如何使用TIC6713DSP库函数中的fft函数做ifft变换?

我使用的是TIC6713DSP,在例程中有一个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;//
时域信号的实部
          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=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=output_l[i*2];//
取实部作为输出信号
          }
        
        for(i=0;i<512;i++)
         {
          gBufferXmtPing=(int)(Buffer_iir_l);
           }  
        //ifft
结束
作者: baikeeditor    时间: 2013-7-31 10:22

//fft结束,ifft开始
        for(i=0;i<NX;i++)
        {
         output_l[i*2]=input_l[i*2];
         output_l[i*2+1]=0;                       // 应该是output_l[2*i+1] = input_l[2*i+1]
        }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0