Chapter 03
LTI システムと畳み込み
「フィルタ」と呼んでいるものの数学的な正体は LTI システム(線形時不変システム) である。 この章で「フィルタはインパルス応答\(h[n]\)で完全に決まる」ことと、畳み込みの公式を導出する。
この章で証明する、ちょっと信じがたい主張. 目の前に中身の見えない黒い箱(フィルタ)がある。回路図もソースコードも分からない。 ところが——その箱を一発「ポン」と叩いて、返ってきた音を録音するだけで、 その箱がこの世のあらゆる入力に対してどう応答するかが、完全に予測できてしまう。
常識的にはおかしい。「一発叩いた音」なんて、その箱の性質のごく一部しか分かりそうにない。 ところが箱が 2 つの条件(線形性と時不変性)を満たしていれば、これが厳密に成り立つ。 そしてオーディオのフィルタ、イコライザ、リバーブ——実用フィルタはほぼ全部この 2 条件を満たす。
この章は、その「一発叩けば全部分かる」を数式にした畳み込みという演算の話である。 名前は物々しいが、中身は「遅らせて、音量を変えて、足す」だけの、極めて素朴な操作にすぎない。
1. システムとは
入力信号\(x[n]\)を受け取り出力信号\(y[n]\)を返す「箱」をシステムと呼ぶ:
(\(\mathcal{T}\)は「箱が中でやっている処理」を表す記号。Transform の T。 中身が足し算なのか掛け算なのか分からないので、とりあえず名前だけ付けておく、という程度の意味。)
例:\(y[n] = \frac{1}{2}(x[n] + x[n-1])\)(隣り合う 2 サンプルの平均 = 簡単なローパスフィルタ)。
なぜこれがローパス(低音を通し高音を削る)になるのか. 隣り合う 2 つの値を平均する、という操作を思い浮かべてほしい。
- ゆっくり変化する信号(低い周波数)では、隣同士の値はほとんど同じ。平均しても値はほぼ変わらない → 素通し。
- 1 サンプルごとに激しく上下する信号(高い周波数、たとえば \(+1, -1, +1, -1, \dots\))では、 隣同士が正反対なので平均するとぴったり 0 → 消える。
つまり「隣と平均する = ならす = 尖った変化を鈍らせる」。写真のぼかしフィルタと同じ理屈である。
2. 線形性と時不変性
線形性 (Linearity)
任意の信号\(x_1, x_2\)と定数\(a, b\)に対して:
直感: 「重ね合わせが効く」。2 つの音を混ぜてからフィルタに通しても、別々に通してから混ぜても結果が同じ。
具体的には次の 2 つを同時に要求している:
- 足し算が保たれる: \(x_1\)の応答と\(x_2\)の応答を足したものが、\(x_1+x_2\)の応答に等しい
- 倍率が保たれる: 入力を 2 倍にすれば、出力もきっかり 2 倍(音量を上げても音色が変わらない)
線形でない例(=この章の理論が使えない箱).
- ギターの歪みエフェクター(ディストーション): 入力を 2 倍にすると出力は 2 倍にならず、 潰れて(クリップして)音色そのものが変わる。だからこそ「歪み」なのだが、線形性は破れている。
- コンプレッサ: 大きい音だけ音量を圧縮する。入力の大きさによって倍率が変わるので線形でない。
逆に言えば、イコライザやリバーブのような「音色は変えるが、音量を上げても素直に比例する」処理は線形。 本シリーズが扱う IIR フィルタは全部こちら側である。
時不変性 (Time-Invariance)
入力を\(n_0\)サンプル遅らせると、出力もそっくりそのまま\(n_0\)サンプル遅れる:
直感: 「システムの性質が時間によって変わらない」。今日通しても明日通しても同じ音になるエフェクター。 言い換えると「箱の性質が時計を見ていない」——いつ入力が来たかによって処理内容が変わらない、ということ。
時不変でない例.
- ワウペダルを踏みながら演奏する場合: 足の動きでフィルタの特性が刻々と変わるので、 同じフレーズでも弾くタイミングによって出音が違う。これは時不変でない(時変システム)。
- フェードアウト(だんだん音量を下げる処理)も、時刻によって倍率が変わるので時不変でない。
なお IIR フィルタも、動作中につまみを回せばその瞬間は時変システムになる (だから 07 章で「係数を動的に変えるときは安定性に注意」という話が出てくる)。 つまみを固定している限りは時不変。
この 2 つを満たすシステムが LTI システム。実用フィルタ(IIR/FIR)はすべて LTI である。
3. 畳み込みの導出 — LTI システムはインパルス応答で完全に決まる
インパルス応答の定義
システムに単位インパルス\(\delta[n]\)を入れたときの出力をインパルス応答と呼ぶ:
直感: 「一発だけ叩いたときの応答」。お寺の鐘を一回突いたときの「ゴーン…(余韻)」が鐘というシステムのインパルス応答。
導出
これから何をするか. 「一発叩いた音\(h[n]\)さえ分かれば、あらゆる入力への応答が分かる」を証明する。 筋道はたった 3 手で、しかも新しい道具は一切使わない:
- 入力をインパルスの寄せ集めにバラす(01 章でやった分解)
- 線形性を使って「バラしてから通す」に切り替える
- 時不変性を使って、ずれたインパルスの応答が「ずれた\(h\)」だと言う
これだけで畳み込みの公式が出てくる。では始める。
01 章で導出した信号の分解を出発点にする:
これをシステムに入力する:
ステップ 1(線形性を使う): 和の各項は「定数\(x[k]\)× 信号\(\delta[n-k]\)」の形(\(k\)は和のインデックスであり、信号としての時間変数は\(n\)であることに注意)。線形性より\(\mathcal{T}\)を和の中に入れ、定数を外に出せる:
ステップ 2(時不変性を使う):\(\mathcal{T}\{\delta[n]\} = h[n]\)だから、入力を\(k\)遅らせた\(\delta[n-k]\)に対する出力は\(h[n-k]\):
代入して:
これが畳み込み和 (convolution sum)。∎
この結果の重み
- LTI システムの入出力関係は、\(h[n]\)という1 本の信号だけで完全に記述できる。 システムの中身(回路図、プログラム)を知らなくても、\(h[n]\)さえ測れば任意の入力への応答が計算できる。
- FIR / IIR という分類は、この\(h[n]\)が有限長か無限長かの分類である(07 章)。
直感: 畳み込みは「重み付き残響の重ね合わせ」
\(y[n] = \sum_k x[k] h[n-k]\)は次のように読める:
過去の各時刻\(k\)に入力された値\(x[k]\)が、それぞれ「\(h\)の形の余韻」を高さ\(x[k]\)倍で発生させる。 時刻\(n\)の出力は、いま鳴っているすべての余韻の合計。
鐘を連打すると、各打撃の「ゴーン」が重なり合って聞こえる。あれが畳み込みである。

4. 畳み込みの性質(すべて導出)
(a) 可換性:\(x * h = h * x\)
変数変換\(m = n - k\)(つまり\(k = n - m\)。\(k\)が\(-\infty \to \infty\)を動くとき\(m\)も\(\infty \to -\infty\)の全整数を動く):
意味: 「入力とインパルス応答の役割は対称」。実装上どちらをずらしながら掛けてもよい。
(b) 結合性:\((x * h_1) * h_2 = x * (h_1 * h_2)\)
和の順序を交換(絶対収束を仮定)し、\(l = m - k\)と変数変換(\(k\)固定で\(m\)が全整数を動けば\(l\)も全整数を動く):
これは\(x * (h_1 * h_2)\)の定義そのもの。∎
意味: フィルタの直列接続は、インパルス応答同士の畳み込みを持つ 1 つのフィルタと等価。 しかも可換性より接続順序を入れ替えても結果は同じ。これが 09 章の「biquad 縦続接続」の理論的根拠。
(c) 分配性:\(x * (h_1 + h_2) = x * h_1 + x * h_2\)
(有限の値をとる 2 つの和への分割)。これは\((x*h_1)[n] + (x*h_2)[n]\)。∎
意味: フィルタの並列接続は、インパルス応答の和を持つ 1 つのフィルタと等価。
5. 因果性
定義: 出力\(y[n]\)が現在と過去の入力(\(x[m], m \leq n\))だけで決まるシステムを因果的 (causal) という。
LTI システムが因果的 ⟺\(h[n] = 0 (n < 0)\)の導出:
(\(\Leftarrow\))\(h[n-k] \)は\(n - k < 0\)すなわち\(k > n\)で 0。よって
となり、未来の入力\(x[k](k>n)\)は出力に影響しない。因果的である。
(\(\Rightarrow\)) 対偶を示す。ある\(n_0 < 0\)で\(h[n_0] \neq 0\)とする。入力\(x[n] = \delta[n]\)を考えると \(y[n_0] = h[n_0] \neq 0\)。つまり入力が時刻 0 に来るより前の時刻\(n_0\) に出力が出ている。 これは「原因より先に結果が出る」ことなので因果的でない。∎
直感: リアルタイム動作するフィルタは未来のサンプルを読めないので必ず因果的。 IIR フィルタは通常、因果的なものとして設計・実装する。
6. BIBO 安定性(IIR 理解の要)
そもそも「安定」とは何が起きないことか. スピーカーがマイクに近づいたときの「ピーーー!」というハウリング——あれは音が マイク→アンプ→スピーカー→マイク…とループを回るたびに大きくなり、際限なく成長した結果である。 IIR フィルタも自分の出力を入力に戻す(フィードバック)仕掛けなので、設計を誤ると全く同じことが起きる。 入力は小さいのに出力だけが青天井に膨らんでいく——これが「不安定」。
「安定」とはその逆で、まともな大きさの入力を入れている限り、出力もまともな大きさに収まること。 これを数学の言葉にしたのが以下の定義である。
定義: 有界な入力(\(|x[n]| \leq B_x < \infty\)がすべての\(n\)で成立)に対して、出力も必ず有界になるとき、 システムは BIBO 安定 (Bounded-Input Bounded-Output stable) という。
(「有界」= 大きさに上限がある、の意。\(B_x\)はその上限値。 「どんなに大きくても\(B_x\)は超えない入力」を入れたら「出力にも何らかの上限がある」ことを要求している。 なお\(B_x\)がいくつであれ構わない——1 でも 100 万でもよく、有限でありさえすればよい。)
定理
導出(十分性:\(\sum|h| < \infty \Rightarrow\)安定)
\(|x[n]| \leq B_x\)とする。三角不等式より:
出力はすべての\(n\)で有界。∎
導出(必要性: 安定\(\Rightarrow \sum|h| < \infty\)。対偶で示す)
\(\sum_k |h[k]| = \infty\)と仮定し、出力が発散する有界入力を具体的に作る。
これから何をするか(作戦の説明). 示したいのは「余韻の総量\(\sum|h|\)が無限なら、そのシステムは不安定」。 不安定とは「有界な入力なのに出力が発散するような、意地悪な入力が 1 つでも存在する」ということなので、 そういう入力を実際に 1 つ作ってみせれば証明完了になる(反例を挙げる、という証明法)。
どう作るか。畳み込み\(y[0] = \sum_k h[k]x[-k]\)は「\(h\)の各値に入力の各値を掛けて足す」計算だから、 \(h[k]\)が正の場所では\(x\)も正、\(h[k]\)が負の場所では\(x\)も負にしてやれば、 掛け算の結果が全部プラスになり、打ち消し合いが一切起きず、最大限に積み上がる。 つまり「符号を\(h\)にぴったり合わせた入力」が最も意地悪な入力である。 しかも各サンプルは\(\pm 1\)か 0 なので、入力としては全くまともな大きさ(有界)。これが以下の\(x[n]\)の正体。
次の入力を考える(各サンプルは\(\pm1\)か 0 なので明らかに有界、\(B_x = 1\)):
時刻\(n = 0\)の出力を計算する:
(\(h[k]\operatorname{sgn}(h[k]) = |h[k]|\)を使った。) 有界な入力なのに出力が無限大になったので BIBO 安定ではない。∎
直感
- 「余韻\(h[n]\)の総量(絶対値の合計)が有限」なら、どんなに意地悪な入力でも出力は暴れない。
- FIR は\(h[n]\)が有限個の値しか持たないので無条件に安定(有限和は必ず有限)。
- IIR は\(h[n]\)が無限に続くので、その減衰が十分速いかどうかで安定/不安定が分かれる。 例えば\(h[n] = a^n u[n]\)なら\(\sum_{n=0}^\infty |a|^n\)は\(|a|<1\)のときだけ収束(02 章の等比級数)。 この条件が 06 章で「極が単位円の内側」という形に一般化される。