2017-11-06 7 views
0

iam matlabコードをjavaに変換すると、X = ifft(___,symmetric)と比較してmatlabの通常のX = ifft(___)関数との違いを理解できないという問題があります。 MatlabのDocsは、彼らが書く:IFFT Matlab対称Java対数学コモン

ほぼ共役対称ベクトルに対しては、逆フーリエ変換、出力が本物であることを保証し「対称」オプションを指定することにより、より高速な変換を計算することができます。

つまり、FFTは高速ですか?結果は虚数部なしで実数になります。

Javaで逆FFTを使用するには、Apache Commonsライブラリを使用します。

FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD); 

     X= fft.transform(X, TransformType.INVERSE); //X is a Complex Array 

これは、私がMatlabで対称を使用すると、私には異なる結果が得られます。 matlabで対称でない私は同じ結果を持っています。

私のIfftに何が間違っていますか?どのようにJavaでifft対称を計算するのですか?

答えて

1

あなたのXが実数であり、したがってYが共役対称である場合、fftまたはifftをより効率的に実行するために「対称」オプションを使用できます。この前提条件が適用されない場合、 "対称"オプションは使用しないでください。おそらくあなたのXは本物ではないでしょうか?