ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値に
ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値について教えて下さい。
今想定している離散フーリエ変換の式は一般的なもので
Σ(k=0~N-1) f(k)exp(-2πkni/N)
を考えています。
また、離散フーリエ変換して得られるスペクトルは
√(Re^2+Im^2)
で計算します。
離散フーリエ変換を適用する関数を、
振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。
(この2つの信号は別々の信号で合成されていません。)
サンプリング周波数を20[Hz]とした場合、サンプリングして得られるデータ列はそれぞれ、
直流: 「1, 1, 1, 1」
正弦波: 「0, 1, 0, -1」
となると想定されます。
(正弦波をサンプリングする場合は位相が関わってきますが、今回は気にしないで下さい。)
このデータ列に対して上記の離散フーリエ変換を適用した場合、
得られるフーリエスペクトルの振幅値はそれぞれ、
直流: 「4」(直流のフーリエスペクトルの振幅値値)
正弦波: 「2」(5[Hz]のフーリエスペクトルの振幅値)
となります。
(データ点数は上の通り4点)
ここで質問なのですが、
離散フーリエ変換して得られるスペクトルの振幅値から元の関数の振幅値を求める場合、
フーリエスペクトルをサンプリングの総データ点数で割ることは数学的に納得できます。
しかしこの例の場合、フーリエスペクトルを総データ点数で割ると、
直流: 「4 -> 1」
正弦波: 「2 -> 0.5」
となってしまい、直流は正しいのですが、正弦波の元の振幅値を正確に求めることは出来ません。
この例の場合、フーリエスペクトルの振幅値から正弦波の振幅値を正しく求めるには、
「フーリエスペクトルの振幅値*2/データ点数」
としてやらなければいけません。
上記のことに関して、なぜこのようになるのかを(2をかける理由を)教えて頂けないでしょうか。
当方、数学についてはあまり詳しくないため、簡単に説明して頂けると幸いです。
お礼
返信ありがとうございました。頑張って探してみます・・・。