C++ fftw和在线DFT计算器得到不同的结果

C++ fftw和在线DFT计算器得到不同的结果,c++,fft,fftw,dft,C++,Fft,Fftw,Dft,我用fftw/C++和在线计算器计算了数组{1,2,3,4,5,6}的FFT。结果似乎有点不同 fftw输出: 联机计算器输出: 如上所示,fftw的后两个结果变为零。 不知道为什么。有人能帮我吗?谢谢 [已编辑] cpp代码: int main() { fftw_complex *out; fftw_plan plan; double arr[]={1,2,3,4,5,6}; int n = sizeof(arr)/sizeof(double); o

我用fftw/C++和在线计算器计算了数组{1,2,3,4,5,6}的FFT。结果似乎有点不同

fftw输出:

联机计算器输出:

如上所示,fftw的后两个结果变为零。 不知道为什么。有人能帮我吗?谢谢

[已编辑] cpp代码:

int main()
{
    fftw_complex *out;
    fftw_plan plan;

    double arr[]={1,2,3,4,5,6};
    int n = sizeof(arr)/sizeof(double);

    out = (fftw_complex*)fftw_malloc ( sizeof ( fftw_complex ) * n );
    plan = fftw_plan_dft_r2c_1d ( n, arr, out, FFTW_ESTIMATE );
    fftw_execute ( plan );

    for (int i = 0; i < n; i++ )
    {
        printf ( "  %3d  %12lf  %12lf\n", i, out[i][0], out[i][1] );
    }

    fftw_free(out);
    fftw_destroy_plan(plan);
    return 0;
}

哦,你使用的是R2C模式,我不知道为什么我以前没有想到这一点。由于对称性,它只写入n/2+1结果


这种行为被记录在案:。

哦,你在使用R2C模式,我不知道为什么我以前没有想到这一点。由于对称性,它只写入n/2+1结果


这种行为被记录在案:。

您究竟如何调用FFTW?因为那个结果肯定是不正确的。嗨,我的代码附在后面。你们到底是如何调用FFTW的?因为那个结果肯定是不正确的。嗨,我的代码附在后面。
 21 + 0j
 -3 + 5.196152j
 -3 + 1.732051j
 -3 + 0j
 -3 - 1.732051j
 -3 - 5.196152j
int main()
{
    fftw_complex *out;
    fftw_plan plan;

    double arr[]={1,2,3,4,5,6};
    int n = sizeof(arr)/sizeof(double);

    out = (fftw_complex*)fftw_malloc ( sizeof ( fftw_complex ) * n );
    plan = fftw_plan_dft_r2c_1d ( n, arr, out, FFTW_ESTIMATE );
    fftw_execute ( plan );

    for (int i = 0; i < n; i++ )
    {
        printf ( "  %3d  %12lf  %12lf\n", i, out[i][0], out[i][1] );
    }

    fftw_free(out);
    fftw_destroy_plan(plan);
    return 0;
}