情報通信工学科 コンピュータ数値解析(学内専用) 担当:中川朋子


実習 離散フーリエ変換

課題
次の時系列データ(時刻順に並んでいるデータという意味)
データその1   データその2  の
(1) グラフをそのまま描き(gnuplotでもEXELでも手書きでもOK)、
(2) 離散フーリエ変換し、      (プログラムの動作テストはここ
(3) 元の式
  f(t)= ( )+ ( )cos( )+ ( )cos( ) + ( )cos( ) + ...
       + ( )sin( )+ ( )sin( ) + ( )sin( ) + ... を求め
(4) この式のグラフを書いて、元のデータを再現できていることを確認
(5) フーリエ変換結果のスペクトル(横軸が周波数、縦軸がパワー a2+b2または
  振幅√(a2+b2)のグラフ)を描きなさい。


離散フーリエ変換のHint

予習プリント 1ページ目(加法定理)   2ページ目(積分)
フーリエ級数展開がなんだか良くわからない人はここ
フーリエ級数展開から離散フーリエ変換に持っていけない人はここ

データは出された個数全部使えばいいというものでもありません。
フーリエ級数展開は、元の関数が周期的であることを前提にしているので、
なるべく周期的になっているところをうまく選んで、
自分で個数を設定してください。(特にデータその2)

データは、毎回キーボードから打ち込むのでは、失敗したときいちいち大変。
ファイルから読むプログラム(fscanf 使用)にしておいて、
データファイルを作ってプログラムと同じディレクトリに置き、
実行./a.out すると楽ですね。

式ができたら、そのグラフを描いてみれば、元のデータの波形と同じになるはず。
見事再現できてるかな?

スペクトルは波の種類類別の強さ(パワーとか振幅とか)を示すので 棒グラフ
元のデータや再現式のグラフは 時間tに対する変化を示すので 折れ線グラフ(Excelなら散布図) が良いです。

スペクトルの横軸をどうしたらいいかわからなくなったら ここ

うまくうごかないときは ここ

離散フーリエ変換 採点基準(合計10点満点の場合)
(1) グラフを描いて、適切なデータ個数の見当をつけた (2点)
(2) 計算方法が正しい (1点)
(3) 計算結果が それぞれどんな周期の波の振幅なのか理解できる(2点)
(4) データを式の形に復元できる(2点)
  例えば f(x)= 3+2cos(2px/16)+ .....など
(5) スペクトル(周波数に対する振幅またはパワーのグラフ)が描ける(1点)
(6) スペクトルの横軸(周波数)、縦軸(振幅またはパワー)が正しい (1点)
(7) 書いてある数値の精度が適切 (1点)

数値解析の最初のページに戻る