请问下我使用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:
请问是什么问题。谢谢
TI中文支持网