标题:
如何使用TIC6713DSP库函数中的fft函数做ifft变换?
[打印本页]
作者:
cuicaifeng
时间:
2013-6-21 14:40
标题:
如何使用TIC6713DSP库函数中的fft函数做ifft变换?
我使用的是
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
;//
时域信号的实部
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