質問: 実数入力からのfft()出力の振幅と位相角を計算するにはどうすればよいですか? 私は実数信号から24サンプルを持っています。サンプルで `fft()`関数を実行し、複雑な出力を取得します。私は非冗長高調波のそれぞれの振幅と位相角を求めたいと思う。実数値のデータがあるので、計算にエイリアシングが含まれている必要があることはわかっています。どうすればいいの? (1)両面から片面フーリエ変換への変換、 私はここでいくつかのことを聞いた。例えば、最初の12の高調波(すなわち、 `fft()`出力の2番目から13番目までの要素)を2倍にして残りの高調波を落とします(つまり、 `> fft()`出力)? (2)片側フーリエ変換の振幅を計算し、 私は `Mod()`関数を使用することができますが、これはいつ行うのですか?私は2から片面に変換する前または後に? (3)片側フーリエ変換の位相角を計算する。 私は `atan()`関数を `fft()`の出力の虚数部と実数部の比で使うことができます。 2面から片面への変換の前後どちらか?また、 `atan` が未定義の場合はどうなりますか? ありがとう。
回答: あなたの入力が実際であるので、FFTの出力はN/2について対称になるので、最初のN/2ビンを見て、2の倍率でスケールすることができます。フェーズでは、理想的にはatan2関数が必要です実数成分と虚数成分を別々の引数として返し、4象限の結果を返します。