私はFFTW3を使用してC++で2D実数FFTを計算しています。マニュアルを読みましたが、いくつか質問があります。マニュアルから:http ://www.fftw.org/fftw3_doc/One_002dDimensional-DFTs-of-Real-Data.html#One_002dDimensional-DFTs-of-Real-Data
これらの速度とスペースの利点と引き換えに、ユーザーはFFTWの複雑な変換の単純さの一部を犠牲にします。まず、入力配列と出力配列のサイズとタイプは異なります。入力はn個の実数で、出力はn / 2 + 1個の複素数(非冗長出力)です。これには、インプレース変換のために入力配列のわずかな「パディング」も必要です。次に、逆変換(複雑から実数へ)には、デフォルトで入力配列を上書きするという副作用があります。これらの不便さはどちらもユーザーに深刻な問題を引き起こすことはありませんが、それらを認識することは重要です。
入力2D行列を行順の1Dベクトルに変換する必要があることを理解しています。しかし、出力はどのように見えますか?n / 2 + 1の数値はどういう意味ですか?言い換えると、2Dマトリックスを取得するために出力を並べ替えるにはどうすればよいですか?
この「パディング」を作成するには、具体的に何をする必要がありますか?