皆さん超お久しぶりです。ZMSのいっちです。

 前回まで連続信号と離散信号それぞれのフーリエ変換・逆変換をおさらいしました。
信号の時間領域と周波数領域の表現方法、そしてそれら2つの領域の相互変換について数学的理解ができたと思います。周期的信号を変換すれば離散信号となり、非周期信号を変換すれば連続信号になることがわかりました。
 シリーズ3回目は、デジタルフィルタの理解に必要な線形時不変システム(LTIシステム)についてお話します。

. . . の前に、前回の追補として、実際のスペクトラム解析について少しお話しますね。

(前回の追補)スペクトラム解析

 離散フーリエ変換によって時間領域の有限な離散データから周波数領域の有限な離散データに相互変換でき、有限な離散データはコンピュータ上で配列として扱えるのでプログラムを書きやすいというお話をしました。この実際例としてスペクトラム解析を取り上げます。シリーズ1回目でオーディオのイコライザーを例に上げましたが、現実にスペクトラムアナライザー(スペアナ)などの測定機で入力信号のスペクトラムを表示することができます。

 ここで、離散フーリエ変換の対象信号は、離散的かつ周期的であったはずです。スペクトラム解析の入力信号をデジタルサンプリングすれば離散的の条件はクリアされますが、入力信号って周期的なんでしょうか???
 現実の信号は必ずしも周期的であることは保証されていまぜんね。ではスペアナではどうしてるんでしょう。

図1.実際の入力信号(非周期的信号)

無理やり周期的信号だと決めつけて離散フーリエ変換をするが正解です(笑

 図2のように、まず実際の非周期的信号の中で一部分を切り取ります(赤枠内をサンプリングします)。
 そして、そのデータが周期的データだと仮定して連結します。ですが無理やり連結したので、図3の赤矢印の部分に不連続点が発生します。このまま測定を行うと実際には存在しない高調波が観測されてしまいます。

図2.赤枠のデータを切り取り、連結する
図3.赤矢印の部分が不整合

 この不整合をなくすためには、接合点を振幅ゼロとして無理やり接合してあげればいいのです(乱暴w)そのために窓関数と言われる関数を乗算します。窓関数にもいくつか種類があり、ここではハニング関数を使用しています。

 すると、不整合部分がつながりました。歪んではいますが不連続点があるよりマシです。ただし、このやり方だと観測するスペクトルの両側にサイドローブと言われるノイズが発生します。

 左のグラフが不整合あり、右が窓関数を乗算した波形です。窓関数を乗算することでサイドローブの信号レベルが下がっていることがわかります。このサイドローブとメインローブのゲイン差がスペクトラム信号利得になります。
 このようにして、スペアナでは入力信号を一定時間で区切って周期的とみなして離散フーリエ変換・スペクトラム解析を行い、これを繰り返して波形を表示しています。

ブラックボックス人問題

某国の放映画像から無断コピー(笑)

 上の画像の黒い箱をTV番組で見たことありますでしょうか?
 いろんな向きの物体をこの箱に流すと、一定方向に揃えて出てくる箱です。○テレの△□△□スイッチに出てきますね。
 この箱のような「ある入力信号を入れて出力信号を得るようなブラックボックス」を、ここでは概念的な”システム”とします。
 このシステムに時間tで信号を入力すると、時間t+nで信号が出力されるとき、このシステムは「時不変システム」となります。入力タイミングによって出力が遅れたり早くなったりはしないってことですね。(少なくともブラックボックス人は時不変人であることは間違いなさそうです笑)

 また、このシステムが、5Hzの振幅が1の信号を入れたら5Hzの振幅が0.1の信号が出力され、
5kHzの振幅が1の信号を入れたら5kHzの振幅が0.9の信号が出力されるような箱(つまりはハイパスフィルタですね)とした場合、
 5Hzの振幅が2の信号+5kHzの振幅が3の信号を同時に入れたら、5Hzの振幅が0.2の信号+5kHzの振幅が2.7の信号が出てきたとします。
このように和と定数倍が保存されているとき、このシステムは「線形システム」となります。

 このような、線形且つ時不変であるシステムのことを、線形時不変システムまたはLTIシステム(Linear Time Invariant System)といいます。

 このLTIシステムの性能を一番簡単で端的に表現するためにはどうしたらよいのでしょうか。それは一番単純な信号を入れた時どのような出力が得られるかを考えればいいのです。
 一番単純な信号はすでに勉強しましたね、そう、デルタ関数です。時間0で高さ無限大、幅は0、面積は1となる特殊な関数ですね。これをインパルス信号とも言います。
 LTIシステムにインパルス信号を入れたらどのような出力が得られるのか、それがインパルス応答です。

インパルス応答の例題

 ある離散信号のLTIシステムにインパルス信号をいれたら、上図のような3つの信号が順番に出力されるとします。この時の波形h[n]の振幅(高さ)をh [0] = h0, h [1]=h1, h [2]=h3 とします。
 このようなシステムに対して、高さ3,5,4のインパルス信号 x [n] (n=0,1,2) を与えた場合の応答 y [n] はどのような式になるでしょうか?ただし、x [n]=0 (n<0, n>2) です。

 それぞれの入力信号に対する応答をすべて足し合わせればよいのです。

x [0]=3に対する応答信号は、y [n]=3 x h [n](振幅3倍の応答が出力)
x [1]=5に対する応答信号は、y [n - 1]=5 x h [n - 1](振幅5倍の応答が1遅れて出力)
x [2]=4に対する応答信号は、y [n - 2]=4 x h [n - 2](振幅4倍の応答が2遅れて出力)
y [n]はインパルス応答をすべて足し合わせて、次式になります。

畳み込みの定理

 前回の宿題に「関数の畳み込み」を出しました。みなさん予習しました?(笑

 この最後の式は、先程のインパルス応答の式そのものです。つまり線形時不変システムの応答とは、
入力信号関数 x [n] とインパルス応答 h [n] の畳み込みと言えます。

 前回までに説明した4種類のフーリエ変換についても、この畳み込みが成立します。
ここで、

  • X k, X (Ω), X (ω) , X [k] : 入力信号x (t) <連続信号の場合> もしくは x [n] <離散信号の場合> を時間領域から周波数領域に変換したもの
  • H k , H (Ω), H (ω), H [k] : LTIシステムのインパルス応答 h (t)もしくは h [n] を時間領域から周波数領域に変換したもの

とします。
 この場合に、入力信号関数 x とインパルス応答関数 h の畳み込みをフーリエ変換すると下記のようになります。

 時間領域では入力信号とインパルス応答の畳み込みが、周波数領域では入力信号のフーリエ変換とインパルス応答のフーリエ変換の積になります。

デジタルフィルタ

 入力信号をフィルタするLTIシステムを考えます。
 フィルタとは任意の周波数を選択するもので、周波数応答の形にしたほうが遮断周波数やゲインが視覚的にわかりやすくなります。したがってフィルタを設計する場合には、この周波数応答で考えたほうが簡単です。前節で、「時間領域では入力信号とインパルス応答の畳み込みが、周波数領域では入力信号のフーリエ変換とインパルス応答のフーリエ変換の積になります。」とありましたが、デジタルフィルタでは「インパルス応答のフーリエ変換」を周波数応答と呼んでいます。

 ただし、実際のシステムではいちいち入力信号をフーリエ変換して周波数応答を乗算することはなく、時間領域で処理をするしかありません。したがってフィルタは、入力信号とインパルス応答の畳み込み演算を行うことになります。

 この畳み込み演算の式を見ると無限和になっています。これを直接演算するにはインパルス応答が有限長である必要があります。

 このインパルス応答が有限長のフィルタを、FIRフィルタといいます。逆にインパルス応答が無限長のフィルタを、IIRフィルタといいます。
 このIIRフィルタでは畳み込みを無限に行う必要があるため、直接的に演算することは不可能です。そこで、線形差分方程式に変換することで有限時間で演算することが可能となります。(数式は面倒なので省略しますw)

*離散時間で考えると、線形差分方程式に変換することになりますが、これが連続時間の場合は線形微分方程式になります。

畳み込み演算の解法

 上で説明したとおり、デジタルフィルタを設計する場合には周波数領域で設計したほうが直感的で簡単です。しかし実際のフィルタシステムは時間領域での畳み込み演算が必須となります。
 そして、インパルス応答が無限長の場合でも畳み込み演算を行うためには、線形微分方程式・線形差分方程式を解く必要があることも説明しました。
 線形微分方程式や線形差分方程式を解いたことある人は分かりますが、真面目に解こうとするとめんどくさいですw。
 なので、ラプラス変換もしくはz変換を使いましょう。超楽ちんです。

連続時間領域では「線形微分方程式」をラプラス変換で解く
離散時間領域では「線形差分方程式」をz変換で解く

1.ラプラス変換とは、t の関数 f(t) e-st (s = c + jΩ) を乗算し、t を0から∞ まで積分したものです。

 つまり、ラプラス変換とは、f (t) を複素数 s = c + jΩ の関数 F(s) に変換することです。その変換は変換表で機械的に変換できます。

 ここで気がつくことは、ラプラス変換も時間領域の関数を別領域に変換するところは、フーリエ変換と同じです。
 フーリエ変換は、時間領域の関数を、振幅が同じ単振動で角周波数が異なる複数の波 ejΩtの合成で表します。
 ラプラス変換は、時間領域の関数を、振幅がectで発散し、角周波数が異なる複数の波 e(c+jΩ)tの合成で表します。

 この異なる振幅と定数cがあるために、フーリエ変換では収束しない関数であってもラプラス変換では収束し解を求めることができます。

2.z変換とは、離散領域でのラプラス変換に対応するもので、連続時間信号にくし形関数をかけてからラプラス変換を行います。
 離散時間信号 x [n] に e-cnをかけたものを離散時間フーリエ変換し、z = ec+jω としたとき次式が求められます。

 z変換にもラプラス変換と同様な変換表があります。

 実際にラプラス変換表・z変換表を用いて、線形微分方程式や線形差分方程式を解く実例は、ぐぐればたくさん出てきますので割愛します。(z変換の実例は後段に示します)
 興味ある人は実際にやってみてください。定数変化法の解法にくらべてどのくらい楽か分かります。

ラプラス変換とフーリエ変換

 LTIシステムのインパルス応答をフーリエ変換したものが周波数応答です。
ではインパルス応答をラプラス変換したものは何でしょうか?これが伝達関数です。
 LTIシステムの伝達関数をH(s)、入力信号と出力信号のそれぞれのラプラス変換をX (s)、Y (s)としたときに、Y (s) = H (s) ・X (s) という積で表現できます。
 また、ラプラス変換式の=0の場合、s = jΩ となります。つまりラプラス変換の c = 0 の場合の特殊解がこれまでやっていたフーリエ変換です。

 離散的なLTIシステムのインパルス応答をz変換したものも同様に伝達関数です。= 0 の場合 z = ejω になります。つまり、z変換のc=0の場合の特殊解が離散時間フーリエ変換ということになります。

演習:移動平均のデジタルフィルタ

 演習として、離散信号の移動平均(演算を簡単にするため3点の移動平均を考えます)を行うLTIシステムを考えます。このシステムは、入力信号の現在を含めた過去3点の平均値を取るので、その差分方程式を組み立てると以下のようになります

これをz変換し、伝達関数を求めます。等比級数の公式を使って最終的な伝達関数を求めます。

求めた伝達関数 H (z) は、

伝達関数から周波数応答を求める場合は、z = ejω を代入します。すると、下記のような周波数応答式とグラフが求まります。

※等比級数の公式ってやったことあるかな?初項a, 公比r, 項数n の等比級数の和は a (1 - r n ) / (1 - r ) でした。したがって、1 + z -1 + z -2 は、a=1, r = z -1 , n = 3 だから、(1 - z -3 ) / (1 - z -1 ) になりますね

s領域とz領域の相互変換

連続時間領域では、微分方程式をラプラス変換によりs領域に変換し、伝達関数 H(s) を求めます。
離散時間領域では、差分方程式をz変換によりz領域に変換し、伝達関数 H(s) を求めます。

 連続時間領域での物理モデルから微分方程式を求め、ラプラス変換でs関数を求めて伝達関数まで求めるフローと、離散時間領域での差分方程式を求め、z変換から伝達関数を求めるフローの相関図を示します。
 ここではs関数とz関数の相互変換の手法の一つとして双一次変換を示します。

 連続時間の伝達関数sに上式を代入すると離散時間の伝達関数に近似的に変換できます。この変換は周波数特性を変えない変換法なのでフィルタによく使われます。これまで実験的や理論的に求めたフィルタ特性を、双一次変換によりデジタルフィルタに持ってくることが可能となります。(ただし誤差があります)
 フィルタ回路はアナログ回路シミュレーターで作成することも多く、その結果を再利用したいというニーズもあるためです。

まとめ

 今回はスペクトラム解析、LTIシステム、畳み込み演算、デジタルフィルタ、ラプラス変換、z変換の概要を駆け足で説明しました。いよいよ、このデジタル信号の復習シリーズも、次回の「サンプリング定理」でお開きとします。

じゃあまたね

最新情報をチェックしよう!

いっちの最新記事8件