Добрый день, каждый, Так что я учусь использовать FFTW, и я тестировал 1D DFT от реального до сложного и все работало нормально. Затем я попытаюсь сделать то же самое с 2D-преобразованием, и я обнаружил, что моя программа выходит из строя.Ошибка при выполнении 2D DFT с FFTW
Дело в том, что я получаю 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 в плане, потому что я не уверен, что это самый маленький, который должен идти первым, но в любом случае я получаю ошибку.
Любая помощь или указание на проблему может быть огромным облегчением. Большое спасибо.