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


離散フーリエ変換(DFT)

前のページから

a0 = (1/N) Σk=0N-1{ fk

am = (2/N) Σk=0N-1{ fk cos(2mpk/N) }

実例!
N=8個のとき
8個で1セットのデータの場合をやってみましょう。
N=8 なので
a0 = (1/8) { f0 + f1 + f2 + f3 + f4 + f5 + f6 + f7

a1 = (2/8){ f0cos(0) + f1cos(2・1p/8) + f2cos(2・1p2/8) + f3cos(2・1p3/8) + f4cos(2・1p4/8) + f5cos(2・1p5/8) + f6cos(2・1p6/8) + f7cos(2・1p7/8)

= (1/4) { f0cos( 0) + f1cos( 45°) + f2cos( 90°) + f3cos( 135°) + f4cos( 180°) + f5cos( 225°) + f6cos( 270°) + f7cos( 315°)

= (1/4) { f0・1 + f1・0.707 + f2・0 + f3・(-0.707) + f4・(-1) + f5・(-0.707) + f6・0 + f7・0.707
                        45°ずつ 増えていくね

a2 = (2/8){ f0cos(0) + f1cos(2・2p/8) + f2cos(2・2p2/8) + f3cos(2・2p3/8) + f4cos(2・2p4/8) + f5cos(2・2p5/8) + f6cos(2・2p6/8) + f7cos(2・2p7/8)

= (1/4) { f0cos( 0) + f1cos( 90°) + f2cos( 180°) + f3cos( 270°) + f4cos( 360°) + f5cos( 450°) + f6cos( 540°) + f7cos( 630°)

= (1/4) { f0cos( 0) + f1cos( 90°) + f2cos( 180°) + f3cos( 270°) + f4cos( 0°) + f5cos( 90°) + f6cos( 180°) + f7cos( 270°)

= (1/4) { f0・1 + f1・0 + f2・(-1) + f3・0 + f4・1 + f5・0 + f6・(-1) + f7・0
                        90°ずつ 増えていく

a3 = (2/8){ f0cos(0) + f1cos(2・3p/8) + f2cos(2・3p2/8) + f3cos(2・3p3/8) + f4cos(2・3p4/8) + f5cos(2・3p5/8) + f6cos(2・3p6/8) + f7cos(2・3p7/8)

= (1/4) { f0cos( 0) + f1cos( 135°) + f2cos( 270°) + f3cos( 405°) + f4cos( 540°) + f5cos( 675°) + f6cos( 810°) + f7cos( 945°)

= (1/4) { f0cos( 0) + f1cos( 135°) + f2cos( 270°) + f3cos( 45°) + f4cos( 180°) + f5cos( 315°) + f6cos( 90°) + f7cos( 225°)
                        135°ずつ 増えてる

a4 = (1/8){ f0cos(0) + f1cos(2・4p/8) + f2cos(2・4p2/8) + f3cos(2・4p3/8) + f4cos(2・4p4/8) + f5cos(2・4p5/8) + f6cos(2・4p6/8) + f7cos(2・4p7/8)

= (1/8) { f0cos( 0) + f1cos( 180°) + f2cos( 360°) + f3cos( 540°) + f4cos( 720°) + f5cos( 900°) + f6cos( 1080°) + f7cos( 1260°)

= (1/8) { f0cos( 0) + f1cos( 180°) + f2cos( 0°) + f3cos( 180°) + f4cos( 0°) + f5cos( 180°) + f6cos( 0°) + f7cos( 180°)
                        180°ずつ 増えてる

m は
何番まで?
ここまで a0 , a1 , a2 , a3 , a4 , と求めてきましたが、 amm って、何番まで行くんでしょう?

ためしにもう一声
a5 = (2/8){ f0cos(0) + f1cos(2・5p/8) + f2cos(2・5p2/8) + f3cos(2・5p3/8) + f4cos(2・5p4/8) + f5cos(2・5p5/8) + f6cos(2・5p6/8) + f7cos(2・5p7/8)

= (1/4) { f0cos( 0) + f1cos( 225°) + f2cos( 450°) + f3cos( 675°) + f4cos( 900°) + f5cos( 1125°) + f6cos( 1350°) + f7cos( 1575°)

= (1/4) { f0cos( 0) + f1cos( 225°) + f2cos( 90°) + f3cos( 315°) + f4cos( 180°) + f5cos( 45°) + f6cos( 270°) + f7cos( 135°)



225°ずつ 増えてるんですが、225°って、逆から回った -135°と同じですよね。てことは

= (1/4) { f0cos( 0) + f1cos( -135°) + f2cos( -270°) + f3cos( -45°) + f4cos( -180°) + f5cos( -315°) + f6cos( -90°) + f7cos( -225°)
                  と書いても同じわけです。
  cos( )の値は角度がプラスでもマイナスでも同じなことを思い出すと、これって、 a3と そっくり同じですよね!

さらにやってみました
a6 = (2/8){ f0cos(0) + f1cos(2・6p/8) + f2cos(2・6p2/8) + f3cos(2・6p3/8) + f4cos(2・6p4/8) + f5cos(2・6p5/8) + f6cos(2・6p6/8) + f7cos(2・6p7/8) }
           2p6/8 つまり 270°ずつ 増えてるんですが、これって、逆から回った -90°と同じなので、  a6 = a2 ってことですね。

しつこくやってみました
a7 = (2/8){ f0cos(0) + f1cos(2・7p/8) + f2cos(2・7p2/8) + f3cos(2・7p3/8) + f4cos(2・7p4/8) + f5cos(2・7p5/8) + f6cos(2・7p6/8) + f7cos(2・7p7/8) }
           2p7/8 つまり 315°ずつ 増えてるんですが、これって、逆から回った -45°と同じなので、  a7 = a1 ってことです。

bmなら、sin(225°) = -sin(135°), sin(270°) = -sin( 90°), sin(315°) = -sin(45°) なので  b5 = -b3 , b6 = -b2 , b7 = -b1 となることがわかります。
パワー am2 + bm2 なら、まったくおなじになるよね。
教訓: データ個数N=8個の時は、フーリエ係数 am , bm のm は4番まで!(データ個数Nの半分まで!)
それ以上やっても、戻ってくるだけなんです。。
スペクトル描いても、鏡に写したようになるだけです。。(だから、真ん中m=個数/2で止めてください)

なお、真ん中a4の1/8 はまちがいじゃないです。 m=0 の時だけでなく、 m= N/2 の時も、最初のとこを(1/N)にしないといけなかったのです。 (理由はここ)

戻る

中川研HOME   ◆情報通信工学科   ◆東北工業大学