Top / _PIP2011 / report / report2

パターン情報処理 2011年度 レポート課題その二 [edit]

締切および注意事項?

問1 [edit]

(1) [edit]

以下の数値を tABCDEF.txt (tABCDEFは自分の学籍番号)というテキストファイルに書き込み,gnuplotでそのグラフを描きなさい. ただし,

  • gnuplotの使い方がわからないひとは Docs/gnuplot をどうぞ
  • 横軸の範囲は -6 から 6 まで,縦軸の範囲は -0.5 から 2.5 までとすること
  • 折れ線グラフとなるように描画スタイルを指定すること
  • x軸,y軸に相当する直線も描画すること cf. 問1の補足
-6 2
-5 0
-3 0
-2 2
-1 0
1 0
2 2
3 0
5 0
6 2

(2)以降では,グラフの横軸に対応する変数を &jsmath(t); として,このグラフに描かれた周期関数を &jsmath(f(t)); と表す.

(2) [edit]

&jsmath(f(t)); の基本周期 &jsmath(T); を求め, &jsmath( -\frac{T}{2} \leq t \leq \frac{T}{2} ); の範囲で &jsmath(f(t)); を式で表しなさい.

(3) [edit]

&jsmath(f(t)); をフーリエ級数展開したときの展開係数 &jsmath(a_k, b_k); を求めなさい. &jsmath(a_k, b_k); の定義は講義資料の通りとする.

(4) [edit]

&jsmath(f(t)); のフーリエ級数展開を &jsmath(n); 番目の成分までで打ち切ったものを &jsmath(f_n(t)); と表すとき,&jsmath(f_5(t)); を式で表しなさい.

(5) [edit]

gnuplotを用いて &jsmath(f(t)); のグラフと &jsmath(f_0(t)); から &jsmath(f_5(t)); までの全てのグラフを重ねて描き,考察しなさい. 問1の補足を参照すること.

問2 [edit]

6次元ベクトル &jsmath( \mathbf{f} = (-6, -6, 0, 0, -12, 6) ); を離散フーリエ変換したい. 次の問に答えなさい.ただし,

  • 「答のみでよい」と記された問題以外は,途中の計算過程も示すこと.
  • 式や記号の使い方は講義資料と同様とすること.
  • 問2の補足に重要な情報があるので参照すること.

(1) [edit]

&jsmath( \mathbf{f} ); の離散フーリエ変換の基底ベクトルを全て求めなさい(答のみでよい). 自然対数の底 &jsmath(e); や三角関数を用いないで表すこと.

(2) [edit]

(1)で求めた基底ベクトルを用いて &jsmath( \mathbf{e}_{0}\cdot\mathbf{e}_{1} ); および &jsmath( \Vert \mathbf{e}_{1} \Vert ); を求めなさい.

(3) [edit]

(1)で求めた基底ベクトルを用いて &jsmath( \mathbf{f} ); を展開したときの展開係数を全て求めなさい. 展開係数は,&jsmath( \mathbf{f} ); と基底ベクトルとの内積によって求めること.

(4) [edit]

(3)の結果を用いて,&jsmath( \mathbf{f} ); の振幅スペクトル(つまり &jsmath( |C_0|, |C_1|, \ldots ); の値)を求めなさい.

(5) [edit]

&jsmath( \mathbf{g} = (0, 0, 2, -1, 1, 1) ); の離散フーリエ変換を &jsmath( \{ D_0, D_1, \ldots , D_5 \} ); とおく. (4)の結果を利用して,&jsmath( \mathbf{g} ); の振幅スペクトルを求めなさい.

ヒント: フーリエ級数展開の話の中で,時間軸方向に平行移動した信号のスペクトルの性質を考えましたが,離散信号でも同じことがいえます. その性質を証明抜きで使って構いません.

問3 [edit]

2010年度のこの科目のページからたどれるところに,定期試験の問題のPDFファイルがある. その問題[2]をやりなさい.

問1の補足 [edit]

  • 次のようにしておくと軸を描けます.
    gnuplot> set zeroaxis
  • 関数のグラフを描く際には,デフォルトの設定だと横軸の標本化間隔が広すぎて曲線ががたがたして見えるでしょう.デフォルトの標本点数は次のコマンドを実行するとわかります.
    gnuplot> show samples
    標本点数を1000にするには次のようにします.
    gnuplot> set samples 1000
    課題のグラフは必ずこのようにして標本点数を増やして描きましょう.
  • &jsmath(f_{5}(t)); などのグラフを描く際には,次のようにgnuplot上で関数を定義して使うようにすると楽(間違えたときに修正ややり直しがしやすい)かも
    gnuplot> f0(t) = 「f0(t)の式」
    gnuplot> f1(t) = f0(t) + 「ほげ」 
    gnuplot> f2(t) = f1(t) + 「ふが」
    gnuplot> f3(t) = ...
    gnuplot> plot "tABCDEF.txt" w l, f1(x), f2(x), f3(x)
    
  • [発展]次の技を応用するともっとかっちょよく楽にできるかも
    gnuplot> s(x) = x > 0 ? 1 : -1
    gnuplot> f(x, a, b) = a*x + b
    gnuplot> plot s(x) * f(x, 2, 3)
    

問2の補足 [edit]

  • ベクトルとスカラの表記の違いに気をつけよう.このページの表記もちゃんと太字とそうでないものを使い分けています. 環境によっては見にくいかもしれませんが, 例えば &jsmath( \mathbf{f} ); は太字です.&jsmath( f ); は太字ではありません.
    • このページの数式の表記には jsMath を用いていますので,このサイトから TeX Fonts をダウンロードして自分のPC等にインストールすればよりきれいに数式を表示できるようになります.
  • 第8回資料4/8の説明をよく読みましょう.
  • 講義第5回資料5/5の「&jsmath(z);の絶対値」の式に誤りがあります.すいません.この科目のページのリンク先のPDFファイルは既に修正済みです.指摘してくれたS君ありがとうございます.

    誤: &jsmath( |z| = z\cdot \bar{z} = \sqrt{x^2+y^2} );
    正: &jsmath( |z| = \sqrt{(z\cdot \bar{z})} = \sqrt{x^2+y^2} );


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-13 (水) 13:45:19 (1194d)