この畳み込み計算機でできること
この畳み込み計算機は、2つの有限な数列どうしの「離散畳み込み(discrete convolution)」を計算します。畳み込みは、信号処理や画像のフィルタリング、確率論、多項式の乗算など、さまざまな場面で使われる基本的な演算です。総和の計算を手作業で行う代わりに、2つの数列を入力するだけで、合成された出力数列が瞬時に得られます。
使い方
入力欄は次の2つだけです。
- 1つ目の数列 — 入力信号、または最初の数値群です。カンマ区切りで入力します(例:
1, 2, 3)。 - 2つ目の数列 — 2つ目の信号、カーネル、またはフィルターです。同じくカンマ区切りで入力します(例:
0, 1, 0.5)。
小数や負の数も使用できます。計算機は入力された値をカンマで分割し、前後の空白を取り除いたうえで、それぞれを数値に変換してから計算を行います。
計算式の解説
離散畳み込みは次のように定義されます。
$$(\text{Seq}_1 * \text{Seq}_2)[i] = \sum_{j=\max(0,\,i-m+1)}^{\min(i,\,n-1)} \text{Seq}_1[j]\cdot \text{Seq}_2[i-j]$$
長さ n と m の2つの有限数列に対して、結果はちょうど n + m − 1 個の値になります。各出力値 \(y[i]\) は、両方の数列の範囲内に収まるすべてのインデックスについて、積 \(x[j]\cdot h[i-j]\) を足し合わせたものです。わかりやすく言えば、一方の数列をもう一方の上でスライドさせながら、重なり合う項どうしを掛け合わせ、各ずらし位置でその合計を求めているのです。
計算例
1つ目の数列を 1, 2, 3、2つ目の数列を 0, 1, 0.5 とします。ここでは \(n = 3\)、\(m = 3\) なので、結果は \(3 + 3 - 1 = 5\) 個の値になります。
- $$y[0] = 1\cdot 0 = 0$$
- $$y[1] = 1\cdot 1 + 2\cdot 0 = 1$$
- $$y[2] = 1\cdot 0.5 + 2\cdot 1 + 3\cdot 0 = 2.5$$
- $$y[3] = 2\cdot 0.5 + 3\cdot 1 = 4$$
- $$y[4] = 3\cdot 0.5 = 1.5$$
したがって、出力は 0, 1, 2.5, 4, 1.5 となります。
よくある質問
出力される数列の長さはどれくらいですか? 常に、1つ目の数列の長さと2つ目の数列の長さを足して1を引いた値(\(n + m - 1\))になります。
2つの数列を入れ替えると結果は変わりますか? 変わりません。畳み込みは交換法則が成り立つため、2つの入力を入れ替えても同じ結果が得られます。
多項式の乗算にも使えますか? はい。それぞれの数列を多項式の係数とみなせば、畳み込みの出力はその積の係数になります。信号処理だけでなく、代数の計算にも便利なショートカットです。