対話型数値解析ソフトウェアを用いたフィードフォワード型およびフィードバック型フィルタの設計 [実験目的] 対話型数値解析ソフトウェア MATLAB(Matrix Laboratory)により、信号波形やフィルタの周波数 特性を簡単にプロットできることを学び、フィードフォワード型フィルタ(FIR フィルタ)を設計する(実 験 a)。さらにフィードバック型フィルタである IIR フィルタを設計し、その要素構成図(ブロック図)を バーチャルに動作させる(実験 b)。 ■[[1]MATLAB を動かす] 使用するコンピュータは Fujitsu の UNIX サーバ機(実験 b)と中古の pc 機(実験 a)であり、OS は Red Hat Linux である。Login からスタートする。 (1)Login。 ログインの ID は ★サーバ機では user、password も user である。 ★pc 機では、usera、password も usera である。 (2)端末を開く。 ★サーバ機では、青いスクリーン画面でマウスの右ボタンをクリックして、 サブメニューの中の「端末を開く」を選ぶ。 pc 機のためにサーバ機の ip アドレスを確認しておく。 $ /sbin/ifconfig 表示の中に ip アドレス 192.168.1.***があるはずである。 ★pc 機では、画面下のタスクバーにある四角いディスプレイアイコン(足形付き)をクリックする。 (3)サーバ機、pc 機ともに、実験で生じた画像データのファイル群を収納するための 日付入りフォルダを作り、その中に収納する準備をしておく。 $ mkdir 2010-month-day (4)MATLAB を起動する。 ★サーバ機では、端末のプロンプト$ のところで $ lmstart (l はエル) と打つと、MATLAB のライセンスマネージャが動く。 つぎに、matlab と打つと、 $ matlab MATLAB が起動する。 ★pc 機では、サーバ機で lmstart を起動しているのを確認後、 pc 機の端末でサーバ機の ip アドレス 192.168.1.***を用いて次のように打つ。 $ xhost 192.168.1.*** $ ssh 192.168.1.*** (サーバ機にログインする。ID は実験 a ではやはり usera、パスワードも usera である。) $ matlab MATLAB の画面が現れる。 (5)実験最後で行う終了処理をここで説明しておく。 ★サーバ機では、MATLAB を右上 x 印で落としてから、端末で $ lmdown (l はエル) として、ライセンスマネージャを終了する。もし、実験 a が使用中ならば、 このコマンドは打たない。 この後、ワークステーション画面のアクション->ログアウト、で終了である。 ★pc 機では、MATLAB を右上 x 印で落としてから、 $ exit (サーバ機から抜け出す) そして、端末右上の x 印で端末を落とす。 この後、下のタスクバーの一番左の足形アイコンをクリック->ログアウト、で終了。 ■[[2]MATLAB の操作 信号を作る練習(実験 a,b)] 操作画面は、大きな右側の部分がコマンドを入力して信号を生成したり、フィルタを設計したりす る所で、左側の小さい上の部分は MATLAB が起動している間、作業空間に保持されているデー 1 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 タを表示する所で、左側下の小さい部分は右側でコマンド入力した履歴を示す。 右側の大きな画面では、MATLAB のプロンプト >> が現われており、その右にカーソルの縦棒| がピョコピョコしている。ここにコマンドを打ち込んでいく。 (縦棒|がピョコピョコしていないときは、そこら適当にマウスでクリックしてみる。例えば上で青く見 える MALAB_Help をクリックする。) ●ディジタル信号のうちで最も簡単な単位ステップ信号は、大きさ 1 が持続する信号をサンプリン グして得られるくり返し信号として得られ、次のように打ち込めば良い。 >> y=ones(30,1) 縦に 1 が 30 個表示される。もしこの表示が面倒で省略したければ >> y=ones(30,1); のように、最後にセミコロン;をつける。 働きはどちらも同じである。 >> plot(y) により、グラフで確認できる。ただし、離散点を線分で結んだグラフとして表示される。 ●単位インパルス信号は次のようにする。 >> y=[1;zeros(29,1)] 第 0 ステップで値 1、次のステップからは値 0 が続く。 ●ランプ信号は時刻 t とともに比例して増大していく信号である。 これを作るには、まずサンプリング時刻を次のように指定する。 >> t=(0:1:29)' ここで右肩上についている ' は横ベクトルを縦ベクトルにする転置記号である。 t は 0 から始まり、刻み 1 づつ増して、29 までの(0, 1, 2, ・・・, 29)なる縦ベクトルである。 ランプ信号は次のようにしてできる。 >> y=t >> plot(y) t の二乗で増大する信号を作るには >> y=t.^2 とすれば良い。記号 .^ は t のそれぞれの成分について二乗する意味である。 >> plot(y) ●チャープ信号 >> help chirp MATLAB では help コマンドでキーワードに関する情報を調べることができる。 ■[[3]線形時不変システムの信号に関する予備知識(実験 a,b)] 信号を扱う予備知識を述べる。連続信号 x t があったとき、サンプリング間隔 T s ごとの離 散信号は x [n]= x nT s , n=0,1,2,⋯ で表わされる。 例えば、周波数 f のコサイン信号では x [n]= A cos 2 f n T sq ただし q は位相である。 ここで規格化周波数 f を導入する。 f = f T s 角周波数についても f =2 f , =2 とする。このとき x [n]= A cos n q となる。 さて、ここで注目すべき重要な働きは、 f に任意の整数 m が加わっても、引かれても x [ n] は 全く同じ信号を表わすということである。つまり周波数 f の元の信号を離散化すると、そのような偽 信号が常に存在することである。 2 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 x [n]= A cos n q=A cos n 2 mq , m=0,±1,±2,⋯ それでは f または をどの範囲で扱えば良いかは、シャノン染谷のサンプリング定理が答え てくれる。次の範囲で扱うのである。 f =[−0.5,0.5] または f =[0,1] =[− ,] または =[0,2] x t つまり信号 に含まれる最大周波数は [−0.5 / T s ,0.5 / T s ] の中に納まっていることを前 堤とするのである。もし納まっていないとするとサンプリングは失敗であり、x[n]には偽信号成分が 含まれることになってしまう。ここで負の値をとる周波数が出てきたが、それはコサイン信号を複素 共役表示すると現われる。 jq jn − jq − jn Acos n q= A e /2e Ae /2e 上式で と − が正と負の規格化スペクトル角周波数を示し、それぞれのスペクトル複素振 幅が Aexp jq/2 と Aexp − jq/2 である。 MATLAB のグラフ表示では、 の [0 ,] を横軸全範囲として表示する。 f の表示では、 [0,0.5] を 0 から 1 の横軸全範囲として表示するので注意する。 x[n] の入力時刻 n を n−n 0 にずらして x[n−n0 ] をシステムに入力すると、出力も y[n] から y[n−n0 ] 線形時不変システム(LTI システム)について説明する。時不変というのは、 に連動して変ることである。線形というのは、二つの入力 x 1 [n] と 別個にシステムへ入力してから結果を足し合わせたものと、入力を へ入力して得られる出力とが一致することを言う。 x 2 [n] があるとき、それぞれ x 1 [n]x 2 [n ] としてシステム MATLAB では、ユーザが以上に述べた予備知識を持っているとしている。 ■[[4]MATLAB の操作 最も簡単なフィルタを設計する練習(実験 a,b)] 信号が x [n]={x[0], x[1] , x[2] , x[3] , x[4]}={2,4,6,4,2} であるとする。MATLAB では >> x=[2 4 6 4 2]' %転置記号 ' に注意 >> plot(x) とする。 これらの続く三個の信号を平均する働きをフィルタの動作とする。 y[n]= x [n]x [n−1]x[n−2]/3, n=0,1,2,3,4,5,6 これは次の一般式で、係数がすべて 1/3 の場合となっている。 y[n]=b0 x[n−0]b1 x[n−1]b2 x[n−2] b=[b0 , b1 , b 2]=[1/3 , 1/3 , 1/3] MATLAB では >> b=[1/3 1/3 1/3] としてフィルタ係数を準備する。 このフィルタの構成図は次のようである。 3 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 x[n] x[n-1] Unit Delay b0 * x[n-2] Unit Delay b1 * b2 * + + y[n] このフィルタは一般分類で 2 次の FIR フィルタと呼ばれる。 MATLAB では >> Hd = dfilt.dffir(b) % l はエル で設計できる。この情報出力は次のようである。 Hd = FilterStructure: 'Direct-Form FIR' Numerator: [0.333333333333333 0.333333333333333 0.333333333333333] PersistentMemory: false %何も誤りではない。永久保持メモリはないといっている。 信号 x に対する出力 y を求めるには >>y = filter(Hd, x); >>figure, plot(y) 入力信号波形と出力信号波形とを比べるとこのフィルタの作用がわかる。 もっと詳しくどのような特性のフィルタができたか調べるには。 >>fvtool(Hd) とする。周波数応答特性、位相特性、インパルス応答、ステップ応答、ゼロ点極配置に関するアイ コンがタスクバーに並んでいるので、必要なものをクリックするとそのグラフが表示される。 ★周波数応答特性: 規格化周波数 f におけるゲイン(入力振幅が何倍されるか)を db (デシベ ル)で表示する。 f =0 は直流を、 f =1.0 は最高周波数を表す。このグラフから設計したフィル タは低周波領域を通過させるかどうか、中間周波数はどうか、高周波成分を遮断または減衰させ るか、などが分かる。 ★位相特性: 入力信号をフィルタに通すと位相変化分が加わる。理想的な位相特性は直線的に 右下がりになる特性(線形位相推移)である。なぜなら信号の位相を表す exp( ) 項の肩の部分に おいて、規格化角周波数 でくくると、定数だけが残るので、 の依存性が無くなるからで ある。 ★インパルス応答: 時刻 0 に値 1、次の時刻ステップからはずっと 0 が続く入力信号に対する出 力である。インパルス応答はシステムの特性を表す。そのフーリエ変換は周波数応答関数である。 FIR フィルタでは、インパルス応答の値はフィルタ係数の値に等しい。 ★ステップ応答: 時刻 0 で値 1 に立ち上がり、その後ずっと 1 の値が続く入力信号に対する応答 である。おもに立ち上がりの応答と、直流分をどう伝えるかを調べるのに用いられる。 ★ゼロ点・極配置: 周波数応答関数を次の項で説明する Z 変換で記述すると、Z の多項式あるい は多項式の分数になる。この関数を 0 にする Z はゼロ点と呼ばれ、システムは入力信号を通さな い。極はこの関数を発散させるので入力信号を良く通す。複素平面上の単位円の円周近傍のゼ ロ点、極の位置がフィルタ特性を左右する。単位円と正の実数軸との交点は =0 の直流を表 し、ここから円弧に沿って半時計方向に回って =π が最高周波数を表す。 画像の保存: MATLAB のライセンス契約により表示画像を保存できないので、画面の切り取りコ ピーを行って、最初[1]の(3)で作ったフォルダ 2010-month-day に保存する。 スタートまたは足型 ---> アプリケーション(またはプログラム) ---> グラフィックス ---> GIMP を起 動する。ファイル ---> 取り込み ---> スクリーンショット ---> シングルウィンドウ ---> マウスが+ 印になる ---> 取り込む画像枠を選んでクリック ---> 名前をつけて上記フォルダに保存。 保存は***.jpg がよい。 ◎レポートにはこの図を手書きで写して提出する。 ■[[5]Z 変換に関する予備知識(実験 a,b)] 上記の信号 x [n] は z 変換では次のように表わされる。 0 −1 −2 −3 −4 X z =2z 4z 6z 4z 2z 4 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 0 −1 −2 −3 =x [0] z x [1] z x [2] z x [3]z x[4] z −4 z の巾乗に従って信号の順番の値が係っているだけである。 −1 がかかると 1 ステップ時刻が遅れ、 z−2 は 2 ステップ時刻が遅れる。 上の表現を信号 X z という。 フィルタ係数は伝達関数として次式のように組みこまれる。 z 0 −1 −2 H z=z z z /3 0 −1 =b 0 z b1 z b 2 z −2 [4]の図からわかるように、フィルタ係数が信号に係る時刻遅れを z の巾乗で表現し、 それらを足し合わせたものが、フィルタの作用であると言っているだけである。 X z が H z の作用を受けると出力 Y z となる。 Y z=H z X z この式の右辺をバラバラ事件にして、z の巾乗で整理すると、 その係数として各時刻における y[n] が得られている。 −1 −2 −1 −2 −3 −4 Y z=1/31z z 24z 6z 4z 2z −1 −2 −3 −4 −5 −6 =1/3[2 42 z 642 z 464 z 246 z 24 z 2z ] 上の plot(y)の図で確かめると良い。 変数 z は実は複素数である。 z=ex p j とおくと(複素単位円の円周上)、伝達関数の周波数特性 H ex p j が得られる。 は上で説明した規格化角周波数であり、 =[− ,] の範囲の値をとる。 H は複素数であるから絶対値と位相をもつ。絶対値は における信号の伝達の強さを 表わす。位相は、 依存性から位相特性つまり位相の遅れ、進みがわかる。 インパルス信号は上の[2]で扱ったように、最初に値 1 で、あとは 0 が続く。 この X z は 1 なので、 H z そのものがインパルス応答の Z 変換 Y z を表わす。 Y z から y[n] を得るには、 Y z を z の巾乗で整理すれば良い(逆 Z 変換)。 ステップ応答は、上の[2]で扱ったステップ信号に対するフィルタの応答である。 上の設計例の H z において、 z=0 とすると発散する。これを z=0 は H z の極である という。もし複素単位円の円周近傍で H z が極を持つと、その近くの では信号を良く伝え る。一方、 H z=0 となる z は H z のゼロ点という。もし複素単位円の円周近傍で H z がゼロ点を持つと、その近くの では信号が伝わらない。 従って、フィルタ設計の基本は、 H z のゼロ点極配置を設計することである。MATLAB ユーザには以上の予備知識を持っているものと仮定されている。 実は、上の[4]で練習した H z のような簡単な式の形では、自由にゼロ点極配置ができないこ とがわかっている。柔軟性を得るには、出力を入力側へ戻すフィードバックが必要なのである。以 下で、実験 b では課題としてフィードバック型フィルタ(IIR フィルタ)を設計する。 ■[[6]実験 a の課題: MATLAB によるフィードフォワード型フィルタ(FIR フィルタ)の設計] 1. 次式で示される FIR フィルタを設計せよ。 23 y [n]=∑ bk x [n−k ] k=0 ただし 5 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 >> b=[-0.0193 0.0099 -0.0003 0.0276 0.0000 -0.0649 0.0264 -0.0126 0.1188 0.0000 -0.3331 0.2422 0.2422 -0.3331 0.0000 0.1188 -0.0126 0.0264 -0.0649 0.0000 0.0276 -0.0003 0.0099 -0.0193] >>Hd = dfilt.dffir(b) このように設計した FIR フィルタの 周波数振幅応答特性 周波数位相特性 インパルス応答 ステップ応答 ゼロ点極配置 を fvtool により表示し、 >>fvtool(Hd) 画像を保存する。それをレポートに手書き提出する。 2. MATLAB にはフィルタの解析ツール fdatool が備わっている。ゼロ点極配置がずれるとどういう 変化が生ずるか見てみる。 >> fdatool このツールの画面左下にアイコン[ba->]がある。それをクリックする。 下側の真中へんに Numerator, Denominator の欄がある。その右の clear ボタンをクリックして二つ の欄を空欄にする。Numerator の欄には上の b の値(MATLAB コマンド欄に既に打ち込んでいる) をコピーペーストする。[...]のカッコも必要である。コピーは青くしてから Edit->Copy で、ペースト するには、★サーバ機ではマウスの中央ボタンを押す(UNIX のマウスは 3 ボタンである)。★pc 機 では両ボタンを同時に押す。 Denominator の欄には[1]を入れる。 次に、下にある Import Filter をクリックする。 次に、左上にある Store Filter をクリックし、保存する。そのときのフィルタ名を覚えておく。これは 上で fvtool で確認したフィルタ Hd と同じものである。 次に、左下の〇に十印のついたアイコンをクリックする。ゼロ点は〇印、極は X 印で表示される。ど れか適当なゼロ点をマウスで移動させる。そうすると、変化に応じたフィルタ係数のフィルタが設計 される。 上のメニューバーに並んでいる周波数応答特性のアイコンをクリックしておくと、その変化を見るこ とができる。そしてレポートに提出する変化を決めたら、Store Filter をクリックし、別名保存する。 位相特性の変化を見るときは上のメニューバーに並んでいる位相のアイコンをクリックする。インパ ルス応答、ステップ応答についても同様である。 これらの画像を保存して、レポートに手書き提出する。 あるいは、左の Filter Manager のアイコンをクリックする。表示されているフィルタを選んで、fvtool ボタンをクリックする。あとは上の練習[4]と同じである。 ◎実験 a の考察 上のシミュレーション結果から、設計した FIR フィルタについて、 周波数振幅特性は、低域通過か、バンドパスか、広域通過か、 位相特性は、周波数に対して直線的に減少しているか、増加しているか、 非線形に変化するか、 H z の係数は対称に作られている。 インパルス応答は、なぜこうなるのか、 H z の係数になる。 ステップ応答は、なぜこうなるのか、 ゼロ点をこう動かしたら、なぜ周波数振幅特性がああなるのか、 などについて考察せよ。 ■[[7] IIR フィルタとは(実験 b のための練習)] 次式で定義されるフィルタを考える。 y[n]=0.8y[n−1]5 x[n ] 6 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 y[n−1] は y[n] を右方向へ 1 ステップずらした関数を表わすから、1 ステップ遅れている。こ れに係数 0.8 が係って入力としてフィードバックされているのが特徴である。 入力信号は時刻 0, 1, 3 でのみ値を持つ次のような信号とする。 x[n]=2 [n]−3 [n−1]2 [n−3] ここで [n] は引数の値が 0 のとき(n=0 のとき)のみ値 1 を出力するクロネッカデルタ関数であ る。出力 y[n] を n=0 から順に追ってみると y[0]=5∗2=10 y[1]=0.8∗105∗−3=−7 y[2]=0.8∗−7=−5.6 y[3]=0.8∗−5.65∗2=5.52 y[4]=0.8∗5 .52=4 .416 y[5]=0.8∗4.416=3.5328 ⋯ このように x [n] が有限時刻で終っても、出力はずっと続く。 もう少し一般的な例を式で書くと y[n]=a1 y[n−1]b0 x[n]b1 x[n−1] -----(1) y[n] の係数はいつも 1 で、右辺 y[n−1] の係数を a 1 と書く。 b0 , b1 のつけ方は[4]の例と同じである。 伝達関数を求めるために上式を Z 変換する。 [n−1] は 1 ステップ遅れを示すので、 [n−1] の項には z−1 をかける必要がある。 Y z z 0=a1 Y z z−1b0 X z z 0b1 X z z −1 式を整理すると 1−a 1 z −1 Y z=b0b1 z −1 X z 入出力の比が伝達関数であるから −1 Y z b0b1 z H z= = X z 1−a1 z−1 これが 1 次の IIR フィルタの伝達関数である。 一般に H z= B z A z と書ける。IIR フィルタの次数は、分母 Az の z−1 の最高次数で言い表わす。 もし y[n−2] が含まれるのなら 2 次になる。 上の式(1)に対する H z の IIR フィルタ構成図(直接形 I)は次のようである。 7 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 b0 x[n] * + + y[n] b1 z−1 a1 * z−1 * B(z)部 1/A(z)部(フィードバック部) H z は 1/ A z ⋅B z とも書けるので、上図の 1/ A z 部と B z 部とを左右交換した配 置にしても良い。交換すると z−1 が共通に一個で済むので次の構成図(直接形 II)が得られる。 b0 x[n] + a1 * z−1 * + y[n] b1 * 例として、 y[n]=0.8y[n−1]2x[n]2x[n−1] -----(2) の場合を考える。係数ベクトルは b=[b0 , b1]=[2 , 2], a=[a 0 ,−a 1]=[1 ,−0 .8] MATLAB では >> b=[2 2] >> a=[1 -0.8] H z のゼロ点極配置を知るために、この場合の直接形 I の IIR フィルタ Hd1 を作る。 >> Hd1 = dfilt.df1(b,a) % dfilt の l はエル、df1 の 1 はいち。 表示出力 Hd1 = FilterStructure: 'Direct-Form I' Numerator: [2 2] Denominator: [1 -0.8] PersistentMemory: false 直接形 II を作りたいのなら >> Hd2 = dfilt.df2(b,a) 表示出力 Hd2 = FilterStructure: 'Direct-Form II' Numerator: [2 2] Denominator: [1 -0.8] PersistentMemory: false この二種類のフィルタ Hd1, Hd2 は数学的に全く同じである。しかし、フィルタ Hd1, Hd2 は、構成 図(ブロック図)が異なる。 1. ゼロ点極配置などの諸特性は >> fvtool(Hd1) から得られる。 ゼロ点極配置のアイコンをクリックすると、複素単位円が表示され、その中にゼロ点は◯で、極は 8 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 X 印で表示されている。今の例では、ゼロ点=(-1.0, 0)=Pi, 極=(0.8, 0)とわかる。周波数特性のア イコンをクリックするとわかるように、このゼロ点極配置は、なだらかな特性を持つ低域通過フィルタ (ローパスフィルタ)を形成している。 2. MATLAB には構成図を手作りして動作させる機能がついている。MATLAB 上部ツールバーに 赤い印のついた Simulink アイコンをクリックすると、機能部品箱が出て来る。ここで File->New>Model を選ぶと設計白紙が出て来る。この白紙に部品を置いていく。部品群のうち Commonly used blocks をダブルクリックすると、通常良く使う部品が並んでいる。これら一つ一つをクリックして コピーして、白紙に張りつける。 足し算 Sum を 2 個、 掛算 Product を 3 個、 単位遅れ Unit Delay を 2 個、 定数 Constant を 3 個、 結果の表示 Scope を 1 個、 これらを上図の直接形 I になるように適当に配置する。 入力は、部品群のうち Sources をダブルクリックして、その中の simin をクリック、コピーしてこの設 計図の左端近辺に張りつける。 つぎに配線をする。上図の直接形 I にならってマウスでドラッグすると配線してくれる。引き出し点 は矢印と反対向きにマウスを動かして引き出し点へ持って来ると継る。場合にもよるが...。 (注意!)Simulink を起動中は、MATLAB がハングアップを起こしやすいので、適当な名前で設計図 をまめに保存しながら進める。(MATLAB の現バージョンが悪いのか、RedHat Linux との相性が悪 いのか...)。 上の定数 [b0, b1]=[2, 2], a1= 0.8 をセットするには ( a 係数については、コマンド>>で入れる値と ブロック図で入れる符号が違うことに注意)、 ◎Constant の部品をダブルクリックすると、数値を入れることができる。 ◎simin については、この要素をダブルクリックして Sample time を 1, Interpolate data を off、 右下を Setting to zero に設定する。 ◎つぎに、設計図で Simulation->Configuration Parameters を選び、現われた画面で、Solver を discrete とする。この設計図に名前を付けて保存する。 ◎入力は、インパルス入力の場合、MATLAB コマンドウィンドウで >> simin=[0 1;1 0;2 0;3 0;4 0;5 0;6 0;7 0;8 0;9 0;10 0;11 0;12 0;13 0; ・・・ ;30 0] とする。時刻 0 で値 1 のインパルスを入れたことになる。 ◎ステップ入力だと >> simin=[0 1;1 1;2 1;3 1;4 1;5 1;6 1;7 1;8 1;9 1;10 1;11 1;12 1;13 1; ・・・ ;30 1] のようにする。 □ シミュレーションを実行するには、まず 入力をインパルスにするか、ステップにするかを決めて おいて、Scope 部品をダブルクリックして画面を表示させておいてから、設計図の Simulation -> Start とする。 □ つぎに、入力を変更して(上記の >>simin=[...])シミュレートする。 □作ったブロック図は実験 b の課題で利用する。 □ Simulink によるシミュレート結果と、上の >>fvtool(Hd1) による応答結果とを比較せよ。fvtool に よるものは、純然たる数学解析の結果であり、Simulink によるバーチャルシミュレーションは、実際 に部品で実装したものの特性の予測である。 ■[[8]実験 b の課題: MATLAB によるフィードバック型フィルタ(IIR フィルタ)の設計] 1. 次式で示される IIR フィルタを設計せよ。 9 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘 y [n]=0.9y[n−1] − 0.81y[n−2] x [n] − x[n−2] -----(3) つまり >> >> >> >> a=[1 -0.9 0.81] b=[1 0 -1] Hd1 = dfilt.df1(b,a) Hd2 = dfilt.df2(b,a) このように設計した IIR フィルタの 周波数振幅応答特性 周波数位相特性 インパルス応答 ステップ応答 ゼロ点極配置 を fvtool により表示し、画像を保存する。 ◎レポートにはこの図を手書きで写して提出する。 2. Simulink により直接形 I の構成図を作れ。 図面での a は、0.9 と -0.81 であることに注意する ( a 係数については、コマンド>>で入れる値と ブロック図で入れる符号が違う)。また、練習の式(2)と課題の式(3)とは違う。練習の x [n−1] は無 いことにも注意する。上の練習で作った設計図を拡張、変更して作る。そしてインパルス応答およ びステップ応答をシミュレートせよ。その構成図とシミュレーション結果の画像を保存する。 ◎レポートにはこれらの図と設計構成図面とを手書きで写して提出する。 ◎実験 b の考察 上の設計構成図面によるシミュレーション結果と、fvtool での結果とを比較し、応答信号波形に違 いがあるか否か。 周波数振幅応答のピークを与える規格化周波数は、周波数位相特性のどのへ んに対応するか。 余裕があれば、フィルタ係数 0.81(構成図では-0.81)の値を少し大きい方へ変更して、一連のシ ミュレーションをやり直してみて、この係数の効果を考察せよ。Simulink が計数値の変化をどこまで 細かく反映できるか、数値的に安定しているか、考察せよ。 (参考書 J. H. McClellan, R. W. Schafer, M. A. Yoder, DSP FIRST -- A Multimedia Approach, Prentice Hall, 1998. ) 10 情報工学実験 対話型数値解析ソフトウェア いわき明星大学 竹内良亘
© Copyright 2024 Paperzz