首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何使用TIC6713DSP库函数中的fft函数做ifft变换?

如何使用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
结束
//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]
        }
做人要做懒羊羊啊!
返回列表