1

逆フーリエ変換を見つけるために C++ 関数を使用しています。

int inYSize = 170; int inXSize = 2280;

float* outData = new float[inYSize*inXSize];
fftwf_plan mReverse = fftwf_plan_dft_c2r_2d(inYSize, inXSize,(fftwf_complex*)temp, outdata,  
FFTW_ESTIMATE);
fftwf_execute(mReverse);

私の入力は、複素数の 2D 配列 temp です。すべての要素は、実数が 1 で虚数が 0 です。

したがってInverseFFT、そのような配列は実際の値を持つ2D配列である必要があると期待しています。出力配列には 0,0 の SPIKE があり、残りの値はすべて 0 である必要があります。しかし、配列の合計サイズで正規化した後でも、出力配列ですべての異なる値を取得しています。その理由は何ですか?

4

2 に答える 2

0

このわずかな情報では、それを判断するのは困難です。私が想像できるのは、ウィンドウの選択によりスペクトル漏れが発生することです (漏れの詳細については、このウィキペディアの記事を参照してください)。

できることは、別のウィンドウ関数を使用して漏れを減らすか、ウィンドウ サイズを再定義することです。

于 2013-04-24T20:01:21.630 に答える