6.プログラム使用上の注意

 離散フーリエ変換の式( 1.離散化フーリエ変換の式の(1)式)と これを逆フーリエ変換して得られる関数( f(nT) )は離散化ならびにΣでの和を有限個に制限する事で 元もとの関数や、それをフーリエ変換したものと異なる点が出てくるので、プログラムの例に 書いたプログラムを使用する際は注意が必要になります。それを以下で説明します。
 以下の説明について詳しい事は離散フーリエ変換について記述した本(たとえば「光とフーリエ変換」)等を見てください。

 まず高速フーリエ変換したい関数 f(x)[下図左] とそのフーリエ変換 F(ν)[下図右]が下図のようになっているとします。

元の関数

 次に関数f(x)を間隔 T で離散化するとそれをフーリエ変換したものはF(ν)が周期的(周期 1/T)に繰り返したものに なります。

関数離散化の影響

 フーリエ変換したものが周期的に繰り返すようになっても、そのうちの一周期分だけを取り出せば、F(ν)を取り出せます。
が、その場合1/T はフーリエ変換F(ν)の広がりより十分大きくなるように選ばれる必要があります。
 そうでないと繰り返すF(ν)が重なって一周期分をとりだしても元のF(ν)に戻らないからです。

 次に数値的に扱うためフーリエ変換のほうも離散化します。このとき離散間隔を 1/(N*T) にすると 逆変換した関数f(x)は周期N*T の周期関数になります。

フーリエ変換離散化の影響

 フーリエ変換F(ν)の引数(周波数)νは、離散化されて ν = k/(N*T) (k は整数)という形になっていますが、 プログラムの例では、kの範囲として0から N-1 をとっているので フーリエ変換F(ν)は、下図右のように ν = 0 〜 1/T の範囲(一周期分)をとることになります。
 このとき逆変換された関数f(x)は、下図左のように 引数x(間隔Tで離散化)が、0 から N*T の範囲をとります

プログラムでの関数

 以上のようにこの図(左)の関数のフーリエ変換を計算したい場合は、上の図(左)のように 関数を書き換えてから計算する必要があります。
(さらにフーリエ変換したものも、上の図(右)とこの図(右)を比べてわかるように書き換える必要があります。)


高速フーリエ変換へ戻る