おはようございます。 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との順序を変更しようとしました。
どのようなヘルプや問題点が指摘されているかを指摘することは、大きな救済となります。どうもありがとうございました。