大家下午好!所以我正在学习使用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
。