2016-11-04 4 views
0

Добрый день, каждый, Так что я учусь использовать 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 в плане, потому что я не уверен, что это самый маленький, который должен идти первым, но в любом случае я получаю ошибку.

Любая помощь или указание на проблему может быть огромным облегчением. Большое спасибо.

ответ

0

Хорошо, что у меня были ошибки и давал пустой массив in2, потому что я поместил данные внутри in.

Извините за беспокойство.