東北工業大学 工学部情報通信工学科 中川研究室


離散フーリエ変換(DFT)

前のページから
c言語の書き方例


am = (2/N) Σk=0N-1 { fk cos(2pmk/N) }
bm = (2/N) Σk=0N-1 { fk sin(2pmk/N) }とは、
        fk の値に cos(2pmk/N) とか sin(2pmk/N) をかけたものを
     k=0 から k=N-1まで足して、
  最後に (2/N)をかければいいので
a = 0.0;    ←最初は 0 にクリア
b = 0.0;
for ( k=0; k<N; k++ ){
a = a + f[k] * cos( 2 * PI * m * k/N );     ← これまでの合計に足していく
b = b + f[k] * sin( 2 * PI * m * k/N );
}            ← それを k=0, 1, 2, ... N-1 までくりかえす
a = a * 2 /N; ←最後に (2/N)をかける
b = b * 2 /N;

のように書けばいいですね。

いろんなm
m = 1, 2, 3, ... N/2 の場合についても a1, a2, a3, ... をすべて求めたいので、
mについてもループにすればできそうですね。

中川研HOME