This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

c6678中FFT结果与matlab中FFT结果差别太大,求帮助



c6678中FFT结果与matlab中FFT结果差别太大,求帮助。附件中包含C6678的FFT工程,matlab的FFT程序,以及两者运算完的结果截图。请求大家帮助了。谢谢。

fft.rar
  • 你可以将MATLAB的数据和你做的数据做一个点除,看是不是存在倍数关系  是那就是有一个动态因子的关系  结果其实没错误

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对

  • 不存在倍数的关系。频谱完全不对。估计我使用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的结果实现实部和虚部分开。

    不知道我的理解对不对