畳み込み積分は結局何を計算してるのかメモ
畳み込み積分は結局何を計算してるのかメモ
畳み込み積分をフーリエかラプラス変換で周波数領域にすると積の形にできて便利だよねくらい雑に理解してたので、 時間領域でどんな計算してるのかメモとして残す。
この記事で出てくる式や図はgistにまとめている。
convolution_integral.ipynb · GitHub
なぜ畳み込み積分なんてするのか
そもそも、何故わざわざ畳み込み積分なんかするのかというところで、以下の状況を想像すると多分わかりやすい。
イメージ:
具体例:単位ステップ波を入力して減衰関数を全体に適用して入力開始からt=1秒後の出力値を考える.
図示すると次のようになる。
ほしい出力値は、上の点すべての高さを総和(積分)した値が畳み込み積分の値になる。
なぜ反転する?
上の点たちをもともとの入力にあった時間に並び替える。 例えば、オレンジの点は元々のときだったのでに並び替える。 これをすべての点にやると次の図になる.
これはつまり反転させた伝達関数と入力信号の重なった領域(つまり積の積分)にほかならない。
伝達関数はどう変わったかを見ると、反転させて終了時間までシフトさせたもので、式に直すととなる。
上図の領域を積分すると...
以上の図から積分の式にすると
これは畳込み積分の式となる。
ちなみに、上の積分は領域が台形に似てるので台形の公式で近似できる。
$$ (上底0.4 + 下底1)*高さ1 / 2 = 0.7 $$
また入力信号の正方形面積の半分(0.5)より大きいので以下の範囲で収まると概算できる。
$$ 0.5 < x(t=1) < 0.7 $$
実際にたたみこみ積分を計算してみる。 範囲はとする。
伝達関数は
だった。これを代入して計算すると、
一般化して図示すると
畳込み積分は終了時間を変数で表す事が多いので次のような式になり、 積分結果が変数を持つので関数の形になる。
ちなみに先程の例を変数ありで積分するとほぼ上記の積分と同じになるが、次のようになる。
終了時刻t=0からt=1まで変えた畳み込み積分の結果を図示したのが次のグラフとなる。 これは伝達関数gを反転させて終了時刻まで移動させてその時重なった領域をプロットしていったものに等しい。
参考リンク
http://www-comm.cs.shinshu-u.ac.jp/public/sigproc/analogconv/
畳み込み - Wikipedia: アニメーションで畳み込み積分が計算されている様子がある