TI中文支持网
TI专业的中文技术问题搜集分享网站

FFT和IFFT问题请教

请问下我使用FFT_Example_66_LE_COFF里面的例子进行FFT变换,然后再对输出的数据进行IFFT变换之后得到的波形和原波形相差非常大,有没有人知道是为什么?

部分源码如下:

#define N (1024)

#pragma DATA_ALIGN(x_16x16, 8);
int16_t x_16x16 [2*N];
#pragma DATA_ALIGN(y_16x16, 8);
int16_t y_16x16 [2*N];
#pragma DATA_ALIGN(w_16x16, 8);
int16_t w_16x16 [2*N];
int16_t ww_16x16 [2*N];
int16_t z_16x16 [2*N];

void main () {
unsigned int a,b,cycle;

/* Generate the input data */
generateInput (NUM_SIN_WAVES);

/* Genarate the various twiddle factors */
gen_twiddle_fft16x16(w_16x16, N);

/* Call the various FFT routines */

DSP_fft16x16(w_16x16, N, x_16x16, y_16x16);

gen_twiddle_ifft16x16(ww_16x16, N);

DSP_ifft16x16(ww_16x16, N, y_16x16, z_16x16);

/* Call the test code to seperate the real and imaginary data */
seperateRealImg ();
}

Andy Yin1:

把IFFT的结果与原来的数据进行幅度比较看看是不是存在倍数的关系呢。

le wang3:

回复 Andy Yin1:

你好,我把x_16x16的数据的偶数位和z_16x16的数据用软件画出来波形之后发现两个差别非常大,请问是不是旋转因子生成的不对呢?还是数据精度的问题?

Andy Yin1:

回复 le wang3:

你有比较是否幅度上相差倍数关系呢,还有你跟其他的输出结果如Matlab进行比较么。

le wang3:

回复 Andy Yin1:

 我对比过数据,通过   DSP_fft16x16   算出来的结果完全不对。

但是我之后使用   DSP_fft16x16r   算出来的结果是对的,

只是   DSP_fft16x16r   花费的时间比   DSP_fft16x16   长很多,

所以还是想搞清楚   DSP_fft16x16   怎么使用

jianwen tong:

你好,我在做6455的FFT时,调用库函数16X16r-i那个,结果老是不对,其他几个库函数结果也不对。我觉得可能是我调用方式或者输入数据有问题。能否发一个例程给我参考下,谢谢。我的原始输入数据是8比特整型的。调用库函数之前转换成了小数并用库函数转为Q.15格式了。QQ:702423476

jimmy cui:

请参考:

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/79279.aspx

我觉得可能存在两个原因:

1、旋转因子没有使用正确;

2、输入数组是否需要是复数?

建议使用MATLAB,将FFT 和 IFFT的结果分别跟MATLAB的输出结果对比!

但愿我的回答能给你直接帮助 或 间接灵感!祝顺!

jianwen tong:

回复 jimmy cui:

谢谢 ,是输入数组的问题

Yuhan Tian:

回复 jianwen tong:

请问是什么问题。谢谢

赞(0)
未经允许不得转载:TI中文支持网 » FFT和IFFT问题请教
分享到: 更多 (0)