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.

求教:C67x用dsplib里的DSPF_sp_fftSPxSP进行FFT的问题。

我在仿真的情况下,用C67x的dsplib里的DSPF_sp_fftSPxSP做1024点的浮点fft:

1. 先将采样数据以实部和虚部交叉的形式存放在数组里;

2. 用tw_gen()产生旋转因子;

3. 调用DSPF_sp_fftSPxSP()做FFT。

请问我的过程有错误没?为什么做出来的结果和matlab里的结果不一样,差别很大。并且我发现每当程序运行到tw_gen()的时候,输入数组里的采样数据就会发生变化,请问大神们,到底是怎么回事?

  • 原来这个论坛是没有人回答这么菜的问题的啊!失望了!

  • 有时间跑一下, 修改了DSPF_sp_fftSPxSP_d.c的程序代码

    Matlab 的输入由test_fft.c所产生

    产生出结果存放在fft_ti_data.m

    在比较matlab结果

    附上部分程序

    N = 1024; 
    for (i = 0; i < N; i++)
    {
        x_array[2 * i]     = sin (2 * 3.1415 *  50 * i / (double) N);
        x_array[2 * i + 1] = sin (2 * 3.1415 * 100 * i / (double) N);
    }
    tw_gen (w_array, N);
    DSPF_sp_fftSPxSP (N, x_array, w_array, y_array, brev, rad, 0, N);
    

    Matlab code:

    N = 1024;
    x_array = reshape (input_fft, 2, N);
    x_cpx = complex(x_array(1,:), x_array(2,:));
    y_cpx = fft(x_cpx);
    % complex array to array of one domain
    result = zeros(2, N);
    result(1,:) = real(y_cpx);
    result(2,:) = imag(y_cpx);
    result = reshape(result, 1, 2*N);
    diff = max(abs(output_fft-result))
    fft_test.zip
  • 十分感谢您的回答,我现在已经找到问题了,我把旋转因子矩阵的大小设置错了。现在改成w[2*N]就OK了!

  • 大哥,我调用DSPF_sp_fftSPxSP()做FFT,得到的结果和matlab仿真不一致,比如说我输入是1KHZ的正弦波,得到的结果是主瓣副瓣都集中在最前面的几个点,第1-10.您有遇到过这个问题么。

x 出现错误。请重试或与管理员联系。