2016-11-04 18 views
0

おはようございます。 FFTWを使用することを学んでいて、1D DFTを実際から複雑にテストしていて、すべてうまくいきました。次に、2D変換で同じことを試みると、私のプログラムが失敗することがわかります。FFTWで2D DFTを実行するとエラーが発生する

私の計画を実行しようとすると、Segmentation Fault (core dumped)が届きます。それは1Dプランでは起こりませんでした。私はここでスタックオーバーフローですべてのドキュメントやその他の質問を読んだことがありますが、私のプログラムがどこで失敗するのか分かりません。

私のプログラムがクラッシュした場所を見つけるためのコードが2つあり、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

私はエラッタがあり、inの中にデータを入れたので、空の配列in2を与えていました。

申し訳ありません。

関連する問題