2016-11-04 67 views
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纽约的计划订单,因为我不知道它是否应该先去但无论如何,我得到的错误最小。

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

回答

0

好吧,我有一个勘误,并给出了一个空阵列in2因为我已经把数据放在in里面。

对不起。