2016-11-04 79 views
0

大家下午好, 所以我正在學習使用FFTW,我正在測試從真實到複雜的一維DFT,並且一切工作正常。然後,現在我嘗試使用2D轉換進行同樣的操作,並發現我的程序失敗。使用FFTW執行2D DFT時出錯

事情是,當我試圖執行我的計劃時,我得到了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紐約的計劃訂單,因爲我不知道它是否應該先去但無論如何,我得到的錯誤最小。

任何形式的幫助或指出可能是這個問題將是一個巨大的解脫。非常感謝你。

回答

0

好吧,我有一個勘誤,並給出了一個空陣列in2因爲我已經把數據放在in裏面。

對不起。