第8章
フーリエ変換の性質(2): たたみこみと積 — 線形時不変システムの入出力
この章のねらい
- たたみこみの定義と「反転してスライドして積和」の操作を言語化できる
- LTIシステムの出力が入力とインパルス応答のたたみこみになる筋道を追える
- たたみこみ⇔積の関係を理解し、フィルタリングの原理として読める
8.1 たたみこみ
たたみこみって言葉、聞いたことだけはあるお。なんか強そうな名前だお。漢字で書くと「畳み込み」だお?
そうだ。英語だと convolution。信号処理でいちばん使う演算と言っていい。まず定義を出すが、最初は記号の見た目に怯むな。連続信号 と のたたみこみ はこう定義される。
離散信号なら積分が和になるだけだ。
積分の中に と が両方いて、外に がいるお。第7章の置換のときよりこんがらがってるお。
落ち着け。記号の山に見えるが、やってる操作は4ステップの単純作業だ。離散版 (8.2) で説明する。出力の1点 を作るのに、
- を左右反転して にする
- それを だけスライドして にする
- と を各点で掛ける
- 全部足し合わせる
これを を1つずつずらしながら繰り返すと、出力 が全部埋まる。「反転・スライド・積和」だ。
反転してスライドして、重なってるところを掛けて足す…。言葉にすると、そんなに怖くないお。でも、なんで反転するんだお? 普通に重ねちゃダメなのかお?
いい質問だ。式 (8.2) を見ろ。 の引数は 、 の引数は 。2つの引数を足すと で、いつも に揃う。「足して になる組み合わせの積を全部集める」のがたたみこみだ。 側の引数が で について減っていくから、 は反転して見える。理屈はあとから効いてくるから、今は手を動かして体感しろ。下のデモだ。
おお、アンバーの がにゅるっと右へ滑っていくお! 重なった部分だけ真ん中に積の棒が立って、その合計が下の出力の高さになるお。 を増やすと出力がだんだん埋まっていくお!
それがたたみこみの全貌だ。最初に と がちょっとだけ重なり始め、完全に重なるあたりで出力が最大になり、すれ違って離れていく。台形みたいな形の出力ができただろ。式の意味なんて、この動きを一度見れば腹に落ちる。
8.2 線形時不変システムとたたみこみ
定義はわかったお。でも「いちばん使う演算」って言ってたわりに、今のところただの数式遊びだお。何の役に立つんだお?
ここからが本題だ。システムの話をする。システムとは、信号を入れたら別の信号が出てくる箱だ。マイク、スピーカー、アンプ、エコー、フィルタ――全部システムだ。入力 に対して出力 を返す。この箱の中身が次の2つの性質を持つとき、特別に扱いやすくなる。
1つ目、線形性。入力を定数倍したら出力も同じだけ定数倍され、2つの入力の和を入れたら出力もそれぞれの和になる。式で書くと、入力 に出力 、 に が対応するとき、
「重ね合わせが効く」ということだ。
2つ目、時不変性。入力を時間でずらしたら、出力も同じだけずれるだけで、形は変わらない。
「いつ入れても同じ反応をする」ということだ。この2つを持つ箱を線形時不変システム、略して LTI システムと呼ぶ。
線形で、時間にかかわらず同じ反応をする箱。…なんとなく行儀のいい箱って感じだお。で、それがたたみこみとどうつながるんだお?
筋道を立てる。まず、どんな入力信号もデルタ(インパルス)の足し合わせに分解できる。離散の単位インパルス は、 で 1、それ以外で 0 の信号だ。これを使うと任意の信号は
と書ける。 という高さの棒を、時刻 の位置に立てたものを全部足す、というだけの当たり前の式だ。
それはわかるお。棒グラフを1本ずつバラして書いただけだお。
その「1本の棒」をシステムに入れたとき、何が出てくるかを名前で呼ぶ。単位インパルス を入れたときの出力をインパルス応答と呼び、 と書く。箱を「ポン」と1回だけ叩いたときの反応だ。
ここで2つの性質を使う。まず時不変性 (8.4) より、 だけ遅れたインパルス を入れれば、出力も だけ遅れて になる。次に線形性 (8.3) より、 倍したインパルスの入力には が応える。そして入力は (8.5) のとおりインパルスの和だから、出力もそれぞれの応答の和になる。
出た! 8.1 で見たたたみこみの式だお! インパルスにバラして、1本ずつの反応を足し戻したら、たたみこみになったお!
そう、それが結論だ。LTI システムの出力は、入力とインパルス応答のたたみこみになる。そしてこの式が言っているのはもっと強いことだ。 さえ分かっていれば、どんな入力 に対する出力も計算できる。
**LTI システムは、インパルス応答 ただ1つで完全に決まる。**箱を1回叩いて反応を記録すれば、その箱の振る舞いを全部知ったことになる。
1回叩けば全部わかる…。なんか診察みたいだお。ハンマーでポンと叩いて反射を見るやつだお。
その例えは悪くない。インパルス応答はシステムの「指紋」だ。
8.3 たたみこみと積の関係
さて、ここでフーリエ変換を持ち出す。たたみこみ の両辺をフーリエ変換すると何が起きるか。結論から書く。
時間領域のたたみこみは、周波数領域では単なる掛け算になる。
ええっ!? あんなにこねくり回した反転・スライド・積和が、周波数の世界では「掛けるだけ」になるのかお!?
なる。導出のスケッチを見せよう。連続版で をフーリエ変換する。
積分の順序を入れ替えて、内側で について積分する。 の部分には第7章でやった時間シフトの性質が効く。 を で変換すると だ。
残った積分は そのもの。だから だ。
第7章の時間シフトがここで効くのかお。性質がつながってるお。…でも、なんで掛け算なんてきれいなことになるんだお。直観が欲しいお。
直観もある。複素指数 を LTI システムに入れると何が出てくるか考えろ。たたみこみで計算すると、
つまり を入れると、同じ が、 倍されて出てくる。形は変わらず大きさと位相だけが変わる。
入れたものと同じ形が、定数倍で出てくる…。なんか線形代数で聞いたお。固有ベクトルと固有値だお!
ど真ん中だ。複素指数 は LTI システムの固有関数で、その固有値が だ。だから話は単純になる。フーリエ変換は信号を複素指数の重ね合わせに分解する操作だった。各成分はシステムを通っても形を変えず、ただ 倍されるだけ。だから周波数ごとに に を掛ければそれが出力のスペクトル――それが (8.7) の正体だ。
この を周波数応答と呼ぶ。インパルス応答 をフーリエ変換したものだ。 は「周波数 の成分を何倍にするか」を表す。ある周波数で が大きければその成分は強められ、小さければ弱められる。これがまさにフィルタリングだ。下のデモで体感しろ。
タップ数 M を増やすと、ガタガタしてた緑の出力がツルツルになっていくお! 下の周波数応答を見ると、高い周波数のところがどんどん潰れてるお。妨害のピンクの線のあたりがちゃんと低くなってるお!
それが「時間のたたみこみ=周波数の掛け算」の威力だ。移動平均という単純なたたみこみが、周波数の世界では「高い周波数を削る低域通過フィルタ」として働いている。 を増やすと通過域が狭くなるから、邪魔な高周波がよく消える代わりに、本物の信号の細かい変化までなまる。このトレードオフをどう設計するかが、フィルタ設計の話だ――それは第12章でみっちりやる。
8.4 周波数領域のたたみこみ
(8.7) は「時間のたたみこみ=周波数の積」だった。第7章で見た双対性を思い出せ。鏡の反対側、つまり「時間の積」をフーリエ変換するとどうなると思う?
双対だから…逆になるんだお? 時間で掛けたら、周波数ではたたみこみになる、とか?
そのとおり。
時間領域で2つの信号を掛けると、周波数領域ではそれらのスペクトルのたたみこみになる(係数 が付くのは連続フーリエ変換の流儀の都合だ)。(8.7) とちょうど役割が入れ替わっている。
きれいに裏返ってるお。…でも、時間で2つの信号を掛けるって、どういうときにやるんだお?
いちばん大事な例が窓掛けだ。現実には信号を無限の長さで観測できない。ある有限の区間だけ切り出す。これは元の信号に、その区間だけ 1 で外が 0 の「窓」を掛ける操作だ。、まさに時間領域の積だ。
すると (8.8) より、観測したスペクトルは「本物のスペクトル 」と「窓のスペクトル 」のたたみこみになる。たたみこみは反転スライド積和でぼやける操作だったろ。
あ、まずいお。本物のスペクトルが、窓のスペクトルでぼかされちゃうってことかお? 鋭いはずの線がにじむお!
そのとおり。信号に窓を掛ける=スペクトルがにじむ。これは避けられない代償で、にじみ方をなるべくマシにするために色々な窓関数(ハン窓・ハミング窓など)が考案された。その話は第11章でじっくりやる。今は「時間で切り取るとスペクトルがぼやける、その理由が (8.8) だ」とだけ覚えておけ。
性質の章、伏線だらけだお。第11章と第12章への置き土産が両方ここにあるんだお。
- たたみこみ は「反転・スライド・積和」。足して になる組の積を全部集める操作
- LTI システム(線形・時不変)の出力は、入力とインパルス応答のたたみこみ 。だから LTI はインパルス応答 ひとつで完全に決まる
- たたみこみ⇔積: 。複素指数は LTI の固有関数で固有値が周波数応答 。「時間のたたみこみは周波数の掛け算」=フィルタリングの原理
- 双対で、時間の積⇔周波数のたたみこみ 。窓掛けでスペクトルがにじむ理由(第11章への伏線)