MCPで接続 →

計算を入力してください

公式

広告

結果

畳み込みの結果:

4, 13, 28, 27, 18

1つ目の数列 1,2,3
2つ目の数列 4,5,6

この畳み込み計算機でできること

この畳み込み計算機は、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]$$

長さ nm の2つの有限数列に対して、結果はちょうど n + m − 1 個の値になります。各出力値 \(y[i]\) は、両方の数列の範囲内に収まるすべてのインデックスについて、積 \(x[j]\cdot h[i-j]\) を足し合わせたものです。わかりやすく言えば、一方の数列をもう一方の上でスライドさせながら、重なり合う項どうしを掛け合わせ、各ずらし位置でその合計を求めているのです。

広告
2つの数列を反転・スライドさせて重ね合わせ、出力数列を生成する離散畳み込みの図
畳み込みは一方の数列を反転させてもう一方の上をずらし、各ずれで重なった積を合計します。

計算例

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 となります。

入力数列、2番目の数列、そしてより長い畳み込み出力を示す3つのステムプロット
出力はどちらの入力よりも長く、長さは \(n + m - 1\) です。

よくある質問

出力される数列の長さはどれくらいですか? 常に、1つ目の数列の長さと2つ目の数列の長さを足して1を引いた値(\(n + m - 1\))になります。

2つの数列を入れ替えると結果は変わりますか? 変わりません。畳み込みは交換法則が成り立つため、2つの入力を入れ替えても同じ結果が得られます。

多項式の乗算にも使えますか? はい。それぞれの数列を多項式の係数とみなせば、畳み込みの出力はその積の係数になります。信号処理だけでなく、代数の計算にも便利なショートカットです。

最終更新: