seegongsik
SC · サンプリングと離散

離散 LTI システム

離散 LTI システムは、インパルス応答 h[n] 一つで完全に決まります。インパルス δ[n] を入れたときに出てくる h[n] を入力の上で滑らせながら掛けて足すと、どんな入力に対する出力も得られ、これが離散畳み込みです。この講では平滑化の強さを動かし、h[n] が入力の雑音をどう削るのかを確かめます。

インパルス応答で雑音を削る

上の図は、このデジタルフィルタのインパルス応答 h[n] = (1 − α)αⁿ を n = 0 から 20 まで棒で描いたもので、インパルス δ[n] を一つ入れるとこの形がそのまま出てきます。下の図の薄い線は、n = 10 で 0 から 1 へ上がるステップに雑音を混ぜた入力 x[n] で、金色の棒が出力 y[n] です。出力は、h[n] を入力の上で滑らせながら掛けて足した離散畳み込みです。最初の α = 0.2 では h[n] の尾が短く、雑音はほとんどそのまま通ります。平滑化の強さ α を上げて尾を長く伸ばすと、より多くの近傍を平均して雑音が削れますが、上げすぎるとステップの角がつぶれ、遅れて立ち上がります。

インパルス応答 h[n] = (1−α)αⁿ
入力 x[n](薄)と出力 y[n](金)
平滑の強さ α0.20
フィルタと出力
α = 0.20 · h[n] = 0.80·0.20^n
記憶長 ≈ 1.3 標本 (IIR)
平滑化が弱いので、インパルス応答 h[n] の尾が短くなっています。出力は近傍をほとんど平均しないので雑音がそのまま通り、出力の棒も入力と同じようにぎざぎざです。α が 0.45 より小さい間は、この状態が続きます。
雑音が残る

インパルス応答がシステムのすべて

離散 LTI システムは、線形(入力を足せば出力も足される)で時不変(入力を遅らせれば出力も同じだけ遅れる)なシステムです。このようなシステムはインパルス応答 h[n] 一つで完全に決まり、インパルス δ[n](n = 0 で 1、それ以外は 0)を入れたときの出力が h[n] です。これ一つで十分なのは、どんな入力 x[n] もインパルスの和 Σ x[k]·δ[n−k] に分解できるからです。線形かつ時不変なので、各インパルス x[k]δ[n−k] に対する出力は x[k]·h[n−k] であり、これらをすべて足すと全体の出力になります。

観察入力 δ[n] ⟶ 出力 h[n]
δ[n] を入れたときの出力がインパルス応答 h[n] です。
選ぶy[n] = Σₖ h[k] ?
出力は h と x の離散畳み込みです。
空欄IIR y[n] = α y[n−1] + (1−α) ?
再帰式は過去の出力を戻します。
自分で有限 h[n] = FIR, 再帰 = ?
再帰があると応答が限りなく続く IIR になります。

出力は滑る加重和

その和 y[n] = Σₖ h[k]·x[n−k] が離散畳み込みです。出力の時刻 n ごとにインパルス応答 h を時間軸で反転させ、入力の n の位置に重ねて、重なった標本どうしを掛けてすべて足し、一こまずらして次の出力を求めます。B 章の連続の畳み込みと比べると、積分 ∫ が和 Σ に、曲線が標本に変わっただけで、原理はまったく同じです。h[n] が短ければ近くの数点だけを、長ければより遠い過去までを混ぜます。均等に平均する形の h は雑音を削る低域通過フィルタになり、隣り合う標本の差をとる形の h は変化を強める高域通過フィルタになります。

FIR と IIR、そして差分方程式

インパルス応答が有限の長さで終わるなら、FIR(有限インパルス応答)フィルタです。長さ M の移動平均 h[n] = 1/M(n = 0, …, M−1)が代表的な例で、入力の標本だけを重み付きで足すので常に安定です。一方、過去の出力を戻す再帰式なら、インパルス応答が限りなく続く IIR(無限インパルス応答)フィルタになります。最初の画面のフィルタ y[n] = α·y[n−1] + (1 − α)·x[n] がその例で、インパルス応答 h[n] = (1 − α)αⁿ がいつまでも尾を引きます。この再帰式こそが差分方程式で、E3 ユニットで見たとおり z 変換すると H(z) = (1 − α)/(1 − α z⁻¹)、極は z = α です。極が単位円の内側(|α| < 1)にあってはじめてインパルス応答が収まって安定になり、少ない係数で長い応答を生む IIR は効率的ですが、極が円の外へ出ると発散することがあります。

最初の画面に戻ると

最初の画面の上にあったインパルス応答 h[n] = (1 − α)αⁿ 一つが、このフィルタのすべてでした。平滑化の強さ α を上げて h[n] の尾を伸ばすと、離散畳み込みがより多くの近傍を平均して出力の雑音が削られ、上げすぎるとステップの角がつぶれました。出力はいつも y[n] = Σₖ h[k]x[n−k]、つまり h を入力の上で滑らせた重み付き和でした。インパルス一つに対する応答さえわかれば、それを滑らせてどんな入力の出力でも作り出せます。離散 LTI システムのすべてが、その小さな h[n] の中に収まっていました。

離散 LTI システムは線形かつ時不変なので、インパルス応答 h[n](δ[n] に対する出力)一つで完全に決まります。どんな入力の出力も離散畳み込み y[n] = Σₖ h[k]x[n−k]、つまり反転して滑らせた h と入力の重み付き和です(B 章の畳み込みを ∫ → Σ にした離散版)。インパルス応答が有限なら FIR(常に安定)、過去の出力を戻す再帰なら限りなく続く IIR です。再帰式(差分方程式)を z 変換すると H(z) の極が得られ、極が単位円の内側にあってはじめて安定です(E3 ユニット)。平均する形の h は低域通過、差をとる形の h は高域通過です。
次のユニットへ

時間軸で畳み込みによってろ波した結果は見ましたが、このフィルタが正確にどの周波数を生かし、どの周波数を殺すのかは、まだ数値では見ていません。次のユニット DTFT と DFT では、インパルス応答を周波数に広げます。インパルス応答の z 変換 H(z) を単位円上 z = ejω で測ったものが DTFT、つまり離散システムの周波数応答で、平均する形の h なら高い ω で小さくなる低域通過の形が現れます。限りなく続く DTFT をコンピュータが実際に計算できるよう有限個の周波数で標本化したものが DFT で、それを速く計算するアルゴリズムが FFT です。時間での畳み込みは、周波数領域では再び掛け算になります。