質問: jtransformsのrealForwardメソッドのJavadocに、 > > This method computes only half of the elements of the real transform. The other half satisfies the symmetry condition. If you want the full real forward transform, use realForwardFull. To get back the original data, use realInverse on the output of this method. > > > > > --- > > > このメソッドは、実際の変換の要素の半分のみを計算します。残りの半分は対称条件を満たします。完全な実際の前方変換が必要な場合は、を使用しますrealForwardFull。元のデータを取得するrealInverseには、このメソッドの出力で使用します。 > > (Google翻訳) > > > と記載されていますが、この「実際の変換の要素の半分のみを計算します。残りの半分は対称条件を満たします。」という言葉の「残りの半分は、対象条件を満たします。」は、「虚数部を計算して返却します」という意味ですか? それとも、実数部と虚数部、それぞれに、「まったく同じ数値を半分入れて返します」という意味ですか? FFTの数式の意味がまだ完全に理解できてないのと、実装しても、パワースペクトラムのデータが正値なのか、判断できず。
回答: ***「虚数部を計算して返却します」という意味ですか?*** 違います。同JavaDocの説明に書いてあるように、実数部・虚数部の値が別々の要素に得られます。 ***実数部と虚数部、それぞれに、「まったく同じ数値を半分入れて返します」という意味ですか?*** 全く同じ数値が入るなら計算する意味が無いので私が意図を掴み損ねている可能性も高いのですが、おそらく違います。 DFT(離散フーリエ変換、FFTはそれを計算するアルゴリズムの一つ)でN個の実数値を入力とする場合、その結果はN個の複素数値になります。 ``` ^ | | @ * | @ @ * * | @ * | @ @ * * | @ |@ * @-------+-------+--> n 0 N/2 N ``` (n>N/2の値は対応する左半分の値の複素共役。) したがって、「まったく同じ」ではないですが、右半分の値は左半分から簡単にわかるので、「左半分の値だけを返します」と言うのが、*This method computes only half of the elements of the real transform.* の意味です。 (「このメソッドは **実数** 変換の半分の要素だけを計算します。」と訳した方が良いでしょう。)