C语言 使用FFTW执行2D DFT时出错



大家下午好!所以我正在学习使用FFTW,我正在测试从真实到复杂的1D 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的顺序,因为我不确定它是否最小,应该先去,但无论如何我得到了错误。

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

好吧,我有一个勘误表,并给出了一个空数组in2,因为我把数据放在in

给您添麻烦了。

最新更新