はしくれエンジニアもどきのメモ

情報系技術・哲学・デザインなどの勉強メモ・備忘録です。

畳み込み積分は結局何を計算してるのかメモ

畳み込み積分は結局何を計算してるのかメモ

畳み込み積分フーリエラプラス変換で周波数領域にすると積の形にできて便利だよねくらい雑に理解してたので、 時間領域でどんな計算してるのかメモとして残す。

この記事で出てくる式や図はgistにまとめている。

convolution_integral.ipynb · GitHub

なぜ畳み込み積分なんてするのか

そもそも、何故わざわざ畳み込み積分なんかするのかというところで、以下の状況を想像すると多分わかりやすい。

イメージ:

  • 入力信号fに伝達関数g(例えば減衰)を適用して変化した値の総和を見たい
  • =(これは伝達関数gを反転させて左から右へ通過させて重なった領域の総和(積分)に等しい)

具体例:単位ステップ波 f(\tau)=1(0\leq \tau \leq 1)を入力して減衰関数 g(\tau)=e^{-\tau}を全体に適用して入力開始からt=1秒後の出力値を考える.

図示すると次のようになる。

f:id:cartman0:20220206024032p:plain
Fig1. 入力信号の減衰

ほしい出力値は、\tau=1上の点すべての高さを総和(積分)した値が畳み込み積分の値になる。

なぜ反転する?

 \tau=1上の点たちをもともとの入力にあった時間に並び替える。 例えば、オレンジの点は元々\tau=0のときだったので\tau=0に並び替える。 これをすべての点にやると次の図になる.

f:id:cartman0:20220206024039p:plain
Fig2. 計算したかったのは反転して重なった領域だった!

これはつまり反転させた伝達関数と入力信号の重なった領域(つまり積の積分)にほかならない。

伝達関数g(\tau)はどう変わったかを見ると、反転させて終了時間\tau=1までシフトさせたもので、式に直すとg(1-\tau)となる。

上図の領域を積分すると...

以上の図から積分の式にすると


x(t=1)=\int_{\tau=0}^{\tau=1}f(\tau)g(1-\tau)d\tau

これは畳込み積分の式となる。

ちなみに、上の積分は領域が台形に似てるので台形の公式で近似できる。

$$ (上底0.4 + 下底1)*高さ1 / 2 = 0.7 $$

また入力信号の正方形面積の半分(0.5)より大きいので以下の範囲で収まると概算できる。

$$ 0.5 < x(t=1) < 0.7 $$

実際にたたみこみ積分を計算してみる。 範囲は0\leq \tau \leq 1とする。

伝達関数


g(\tau)=\exp{(-\tau)}

だった。これを代入して計算すると、


\begin{eqnarray}
x(t=1)&=&\int_{\tau=0}^{\tau=1}f(\tau)g(1-\tau)d\tau\\
&=&\int_{\tau=0}^{\tau=1}1\cdot \exp{(-(1-\tau))}d\tau\\
&=&\int_{\tau=0}^{\tau=1} \exp{(\tau-1)}d\tau\\
&=&\exp{(-1)}\int_{\tau=0}^{\tau=1} \exp{(\tau)}d\tau\\
&=&\exp{(-1)}\left[  \exp{(\tau)} \right]_{\tau=0}^{\tau=1} \\
&=&\exp{(-1)}\left[  \exp{(\tau=1)} - 1 \right]\\
&=& 1 - \exp{(-1)}\\
&\fallingdotseq& 0.632
\end{eqnarray}

一般化して図示すると

畳込み積分は終了時間を変数で表す事が多いので次のような式になり、 積分結果が変数を持つので関数の形になる。


(f*g)(t)=\int_{\tau=0}^{\tau=1}f(\tau)g(t-\tau)d\tau

ちなみに先程の例を変数ありで積分するとほぼ上記の積分と同じになるが、次のようになる。

 
\begin{eqnarray}
(f*g)(t)
&=&\int_{0}^{t}f(\tau)g(t-\tau)d\tau \\
&=& \int_{0}^{t}1\cdot \exp{(-(t-\tau))}d\tau\\
&=& \int_{0}^{t} \exp{(\tau-t)}d\tau\\
&=& \int_{0}^{t}  \exp{(-t)}\exp{(\tau)} d\tau \\
&=& \exp{(-t)}\left[\exp{(\tau)} \right]_0^t \\
&=& \exp{(-t)}(\exp{(t)} - 1) \\
&=&1-\exp{(-t)}, (0 \leq t \leq 1)
\end{eqnarray}

終了時刻t=0からt=1まで変えた畳み込み積分の結果を図示したのが次のグラフとなる。 これは伝達関数gを反転させて終了時刻まで移動させてその時重なった領域をプロットしていったものに等しい。

f:id:cartman0:20220206024045p:plain
終了時刻tを変えた畳み込み積分のプロット