離散 LTI システム
インパルス応答で雑音を削る
上の図は、このデジタルフィルタのインパルス応答 h[n] = (1 − α)αⁿ を n = 0 から 20 まで棒で描いたもので、インパルス δ[n] を一つ入れるとこの形がそのまま出てきます。下の図の薄い線は、n = 10 で 0 から 1 へ上がるステップに雑音を混ぜた入力 x[n] で、金色の棒が出力 y[n] です。出力は、h[n] を入力の上で滑らせながら掛けて足した離散畳み込みです。最初の α = 0.2 では h[n] の尾が短く、雑音はほとんどそのまま通ります。平滑化の強さ α を上げて尾を長く伸ばすと、より多くの近傍を平均して雑音が削れますが、上げすぎるとステップの角がつぶれ、遅れて立ち上がります。
インパルス応答がシステムのすべて
離散 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] であり、これらをすべて足すと全体の出力になります。
出力は滑る加重和
その和 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] の中に収まっていました。
時間軸で畳み込みによってろ波した結果は見ましたが、このフィルタが正確にどの周波数を生かし、どの周波数を殺すのかは、まだ数値では見ていません。次のユニット DTFT と DFT では、インパルス応答を周波数に広げます。インパルス応答の z 変換 H(z) を単位円上 z = ejω で測ったものが DTFT、つまり離散システムの周波数応答で、平均する形の h なら高い ω で小さくなる低域通過の形が現れます。限りなく続く DTFT をコンピュータが実際に計算できるよう有限個の周波数で標本化したものが DFT で、それを速く計算するアルゴリズムが FFT です。時間での畳み込みは、周波数領域では再び掛け算になります。