この計算機でできること
線形畳み込み計算機は、2つの離散数列を「離散線形畳み込み(コンボリューション)」の演算で結合します。畳み込みはデジタル信号処理(DSP)の基本となる演算であり、線形時不変(LTI)システムの入力信号とインパルス応答がわかっているときに、その出力を求めるために使われます。2つの数列を入力するだけで、畳み込み後の数列全体に加えて、その最大値と最小値も即座に表示します。
使い方
入力欄は次の2つだけです。
- 第1数列 – 入力信号 x を、カンマ区切りの数値で入力します。例:
1, 2, 3 - 第2数列 – もう一方の信号 h(多くの場合インパルス応答)を入力します。例:
0, 1, 0.5
小数も負の数も使えます。各値は前後の空白が取り除かれてから数値として解釈されるため、スペースの有無は気にする必要はありません。
計算式
離散線形畳み込みは次のように定義されます。
$$y[n] = \sum_{k} x[k] \cdot h[n-k]$$実際には、この計算機は二重ループによる直接計算で実装しています。第1数列のすべての要素を第2数列のすべての要素と掛け合わせ、各積 \(x[i] \cdot h[j]\) を出力位置 \(i + j\) に加算していきます。得られる数列の長さは len(x) + len(h) − 1 になります。
計算例
x = [1, 2, 3]、h = [1, 1] とします。出力の長さは \(3 + 2 - 1 = 4\) です。
- \(y[0] = 1 \cdot 1 = 1\)
- \(y[1] = 1 \cdot 1 + 2 \cdot 1 = 3\)
- \(y[2] = 2 \cdot 1 + 3 \cdot 1 = 5\)
- \(y[3] = 3 \cdot 1 = 3\)
したがって畳み込みの結果は [1, 3, 5, 3] となり、最大値は 5、最小値は 1 です。
よくある質問
結果の長さはどれくらいになりますか? 常に「2つの入力数列の長さの合計から1を引いた値」です。たとえば4要素の数列と3要素の数列を畳み込むと、6個の値が得られます。
数列を入力する順番は結果に影響しますか? いいえ。畳み込みには交換法則が成り立つため、第1数列と第2数列を入れ替えても同じ結果になります。
これは相互相関(クロスコリレーション)と同じものですか? いいえ。畳み込みでは、スライドさせる前に一方の数列を反転させます(式中の \(h[n-k]\) の項)が、相関では反転を行いません。そのため、どちらかの数列が対称でない限り、両者の結果は異なります。