c6678中FFT结果与matlab中FFT结果差别太大,求帮助。附件中包含C6678的FFT工程,matlab的FFT程序,以及两者运算完的结果截图。请求大家帮助了。谢谢。
xueyao:
你可以将MATLAB的数据和你做的数据做一个点除,看是不是存在倍数关系 是那就是有一个动态因子的关系 结果其实没错误
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main (){ int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main (){ int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main (){ int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main (){ int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main (){ int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main (){ int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main (){ int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main () { int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对
user1212849:
回复 xueyao:
不存在倍数的关系。频谱完全不对。估计我使用FFT的时候,哪块没有理解。
void main () { int i=0; float j=1.5; /* Generate the input data */ generateInput (NUM_SIN_WAVES); /* Genarate twiddle factors */ gen_twiddle_fft_sp(w_sp, N);
/* Call FFT routine */ DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);
/* Call the test code to seperate the real and imaginary data */ seperateRealImg (); i=(int)(&(y_real_sp[0])); i=(int)(&(y_imag_sp[0]));
该函数我是这么理解的:
(1)generateInput (NUM_SIN_WAVES);产生时域信号。时域为自然序
(2)gen_twiddle_fft_sp(w_sp, N);产生旋转因子
(3)DSPF_sp_fftSPxSP(N, x_sp, w_sp, y_sp, brev, 2, 0, N);实现浮点FFT,输出结果是自然序
(4)seperateRealImg ();将FFT的结果实现实部和虚部分开。
不知道我的理解对不对