使用 FFTW 执行 2D DFT 时出错
Error when executing 2D DFT with FFTW
大家下午好,
因此,我正在学习使用 FFTW,并且正在测试从真实到复杂的一维 DFT,一切正常。然后现在我尝试对 2D 转换做同样的事情,但我发现我的程序失败了。
问题是,当我尝试执行我的计划时,我得到了 Segmentation Fault (core dumped)
。一维计划没有发生这种情况,我已经通读了 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
.
中
抱歉给您带来麻烦。
大家下午好, 因此,我正在学习使用 FFTW,并且正在测试从真实到复杂的一维 DFT,一切正常。然后现在我尝试对 2D 转换做同样的事情,但我发现我的程序失败了。
问题是,当我尝试执行我的计划时,我得到了 Segmentation Fault (core dumped)
。一维计划没有发生这种情况,我已经通读了 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
.
抱歉给您带来麻烦。