大家下午好, 所以我正在学习使用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的顺序,因为我不确定它是否应该是最小的,但无论如何我都会得到错误。
任何形式的帮助或指出可能是问题都将是一个巨大的解脱。非常感谢你。
答案 0 :(得分:0)
好的,我有一个勘误并且正在提供一个空数组in2
,因为我已将数据放在in
内。
不好意思。