【问题标题】:Error when executing 2D DFT with FFTW使用 FFTW 执行 2D DFT 时出错
【发布时间】:2016-11-04 14:37:34
【问题描述】:

大家下午好, 因此,我正在学习使用 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 的顺序,因为我不确定它是否是应该先行的最小但无论如何我得到了错误。

任何可能是问题的帮助或指出都会是一种巨大的解脱。非常感谢。

【问题讨论】:

  • 为了您自己和我们的利益,请在以后的文章中在代码中添加正确的缩进(每个嵌套块中总是一个制表符或四个空格)。此外,如何在不声明类型的情况下声明 for (kjj = 0; etc.),例如for (int kjj = 0; etc..)?

标签: c 2d fftw


【解决方案1】:

好的,我有一个勘误表并给出了一个空数组in2,因为我已将数据放入in

抱歉给您添麻烦了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多