第15章
ディジタルフィルタの解析
この章のねらい
- H(z) を z=e^{jω} で評価すると周波数特性になることを理解する
- 極・零点の配置から振幅特性の山谷を直観的に読めるようになる
- 安定性の条件(極が単位円内)と線形位相・群遅延の意味を説明できる
15.1 周波数特性
前の章で出てきた伝達関数 ってやつ、結局あれは何を表してるんだお? 入力と出力の比、みたいな曖昧な理解で止まってるお。
そこを今日ハッキリさせる。差分方程式で書かれた離散時間システムは、z 変換すると分数の形になる。
これが伝達関数だ。で、ここからが本題。 に単位円上の点 を代入すると、何が起きると思う?
…。第2章でやった、半径1で角度 の回転する点だお。それを代入する…?
そうだ。代入した は周波数応答そのものになる。つまり「角周波数 の正弦波を入れたとき、出力がどれだけ大きくなって(振幅)、どれだけ位相がずれるか(位相)」を、複素数1個で表したものだ。
絶対値 が振幅特性、偏角 が位相特性だ。
なんで単位円上を選ぶんだお? は複素平面のどこにでも置けるはずだお。
いい質問だ。 と書いたとき、 の円周がちょうど「定常的な正弦波入力」に対応するからだ。 や は増大・減衰する信号に対応する。フィルタにかける入力は基本的に「ずっと続く正弦波」を想定するから、その振る舞いを見るには単位円の上を一周すれば十分なんだ。 を から まで動かせば、直流から最高周波数(ナイキスト)までの応答が全部見える。
なるほどだお。 平面全体のうち、実際に使うのは円周だけってことかお。
15.2 極と零点
ここで式 (15.1) の分子 と分母 を、それぞれ根の積に因数分解する。
分子を 0 にする を零点(zero)、分母を 0 にする を極(pole)という。 はゲイン定数だ。
零点では分子が 0 だから 、極では分母が 0 だから が無限大に飛ぶ、ってことかお。名前のまんまだお。
そのとおり。で、ここからが今日いちばん見てほしいところだ。式 (15.3) に を代入して絶対値をとると、こうなる。
この は何だと思う? 複素平面上の2点間の距離だ。
距離? あ、 は単位円上の点で、 は零点の場所だから…単位円上の点から零点までの距離だお!
そういうことだ。つまり振幅特性はこう読める。
単位円上を に沿って歩いていく点から、各零点までの距離の積を、各極までの距離の積で割ったもの。
歩いている点が極の近くを通ると、分母の距離が小さくなって が大きくなる。つまり山ができる。逆に零点の近くを通ると分子の距離が小さくなって が小さくなる。谷だ。
おおー。極が「引き寄せる磁石」で、零点が「押し下げる重し」みたいなイメージだお。極を単位円のすぐ内側に置けば、その角度のあたりに鋭い山が立つってことかお。
その理解で完璧だ。言葉だけだと半信半疑だろうから、自分で極と零点をつまんで動かせる装置を用意した。これが本章の目玉だ。
うおおっ、極を円のフチに近づけたら、右のグラフにニョキッと山が生えたお! しかも極の角度を変えると、山の位置が左右に動くお! これ面白いお!
体で覚えたな。極の角度が山の出る周波数を決め、極の半径(円にどれだけ近いか)が山の鋭さを決める。フィルタ設計とは結局、「どこに極と零点を置けば欲しい形になるか」を考える作業なんだ。
15.3 安定性
さっき極を円の外に出したら「不安定!」って出たお。あれは何が起きてるんだお?
第14章で、 変換の逆変換をやると極が の形の時間波形を生むという話をしたな。極の位置を とすると、対応する出力には がかかる。ここで は極の半径、つまり原点からの距離だ。
…。 は時間(サンプル番号)だお。 が 1 より小さければ はどんどん小さくなって消える。 が 1 より大きいと…爆発するお!
そういうことだ。だから安定性の条件はシンプルだ。
因果的な離散時間システムが安定 ⇔ すべての極が単位円の内側()にある。
極が一つでも円の外(または円上)に出ると、入力が有限でも出力が時間とともに発散する。さっきのデモで「不安定!」が出たのは、極の半径が 1 以上になったときだ。
零点は外に出ても平気なのかお?
平気だ。零点は分子側、 を 0 に近づける要素だから、どこにあっても発散はしない。安定性に効くのは極だけ。「極は檻の中、零点は自由」と覚えておけ。
15.4 線形位相特性
ここまで振幅特性ばかり見てきたが、位相特性も同じくらい大事だ。とくに線形位相という性質が重要になる。
線形位相? 位相が直線ってことかお。位相が直線だと何が嬉しいんだお?
位相特性が という、 に比例する直線だったとしよう。 は定数だ。このとき、入力の正弦波 は出力で
になる。つまりどの周波数の成分も等しく サンプルだけ遅れる。全部が同じだけ遅れるなら、波形の形は崩れない。ただ時間軸上を ぶん平行移動するだけだ。
なるほどだお。みんなで足並みそろえて遅れるから、隊列(波形)の形が保たれるんだお。逆に、周波数ごとに遅れ方がバラバラだと…
波形がぐにゃっと歪む。これを位相歪みという。音声や画像では、振幅特性が同じでも位相が乱れると質感が劣化する。だから線形位相が望ましい場面が多い。
ここで朗報だ。インパルス応答が左右対称な FIR フィルタは、厳密に線形位相にできる。 という対称性があれば、位相は必ず の一次式になる。
FIR は対称にすれば線形位相、と。じゃあ IIR はどうなんだお?
IIR は因果的なままでは厳密な線形位相にできない。これは IIR の宿命だ。フィードバック(分母の極)があると位相が必ず曲がる。だから「波形を崩したくない、計算量は多くてもいい」なら対称 FIR、「少ない計算で急峻な特性が欲しい、多少の位相歪みは許す」なら IIR、という使い分けになる。
15.5 群遅延
「遅れ」の話が出てきたお。さっきの は具体的にどう測るんだお?
そのために群遅延を定義する。位相特性を で微分して符号を反転したものだ。
意味は「角周波数 付近の成分が、何サンプル遅れて出てくるか」だ。位相が直線 なら、微分すると で、群遅延は全周波数で一定になる。これが線形位相の特徴だ。
位相のグラフの「傾き」が遅れの量ってことかお。傾きが一定なら遅れも一定、傾きが場所で変われば遅れも周波数ごとにバラバラ…。
そのとおり。下のデモで、対称 FIR と IIR の位相特性と群遅延を並べてある。フィルタを切り替えて見比べてみろ。
ほんとだお! FIR のほうは群遅延が真っ平らで 10 のところにピッタリ張り付いてるお。IIR に変えると、にょろっと曲がるお。
その「10」は、21タップの対称 FIR の中心位置 から来ている。対称フィルタは中心を境に折り返した形だから、ちょうど中心ぶんだけ一様に遅れる。きれいな数字になるだろ。
極と零点で振幅の山谷を作って、位相が崩れないように対称にする…。フィルタを「設計する」っていうのが、だんだん具体的な作業に見えてきたお。
いい流れだ。解析の道具はこれで揃った。次章はいよいよ、欲しい特性から逆算してフィルタを設計する話に入る。
- に を代入すると周波数応答 になる。絶対値が振幅特性、偏角が位相特性
- 振幅特性は「単位円上の点から各零点までの距離の積 ÷ 各極までの距離の積」。極の近くは山、零点の近くは谷
- 安定性の条件はすべての極が単位円の内側()。零点はどこにあってもよい
- 位相が の直線(線形位相)なら全周波数が等しく 遅れ、波形が崩れない。対称FIRは線形位相にできるが、因果IIRはできない
- 群遅延 は「周波数 の成分が何サンプル遅れるか」。線形位相なら定数