使用FFTW执行2D DFT时出错

时间:2016-11-04 14:37:35

标签: c 2d fftw

大家下午好, 所以我正在学习使用FFTW,我正在测试从真实到复杂的一维DFT,一切都运行良好。然后我现在尝试用2D转换做同样的事情,我发现我的程序失败了。

当我尝试执行我的计划时,我得到Segmentation Fault (core dumped)。在1D计划中没有发生这种情况,我已经在Stack Overflow中阅读了所有文档和其他问题,但我无法找到程序失败的位置。

你可以看到在代码中有几个打印件可以找到我的程序崩溃的位置,它只是在执行时打印executing但从未到达executed所以我认为错误应该来自计划声明,但我不知道为什么。

// Declaring variables
const int   Nx=88; 
const int   Ny=44;  
const int   DataFiles=512;
fftw_complex *out2;
double *in2= (double *) fftw_malloc(sizeof(double) * Ny*Nx );
out2  = (fftw_complex*) fftw_malloc( Nx*(Ny/2+1) * sizeof(fftw_complex));
fftw_plan p2 = fftw_plan_dft_r2c_2d (Ny,Nx, in2, out2, FFTW_ESTIMATE);

printf("done \n");
for (n=0; n<DataFiles;n++){
// Filling input with the data
for(kjj=0;kjj<Ny;kjj++){
for(kii=0;kii<Nx;kii++){
    index = kjj*Nx + kii;
    in[index]=data[n][kii][kjj];
}}
printf("executing \n");
fftw_execute(p2);
printf("executed \n");
// DO THINGS WITH OUT[][]
}

我已尝试在计划中更改Nx Ny的顺序,因为我不确定它是否应该是最小的,但无论如何我都会得到错误。

任何形式的帮助或指出可能是问题都将是一个巨大的解脱。非常感谢你。

1 个答案:

答案 0 :(得分:0)

好的,我有一个勘误并且正在提供一个空数组in2,因为我已将数据放在in内。

不好意思。