0
大家下午好, 所以我正在学习使用FFTW,我正在测试从真实到复杂的一维DFT,并且一切工作正常。然后,现在我尝试使用2D转换进行同样的操作,并发现我的程序失败。使用FFTW执行2D DFT时出错
事情是,当我试图执行我的计划时,我得到了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纽约的计划订单,因为我不知道它是否应该先去但无论如何,我得到的错误最小。
任何形式的帮助或指出可能是这个问题将是一个巨大的解脱。非常感谢你。