컨볼루션 계산기로 할 수 있는 일
이 컨볼루션 계산기는 유한한 두 수열의 이산 합성곱(discrete convolution)을 계산합니다. 합성곱은 신호 처리, 이미지 필터링, 확률, 다항식 곱셈 등에서 핵심이 되는 연산입니다. 복잡한 합을 손으로 일일이 계산할 필요 없이, 두 수열만 입력하면 결과로 합쳐진 출력 수열을 곧바로 확인할 수 있습니다.
사용 방법
입력란은 단 두 개뿐입니다.
- 첫 번째 수열 — 입력 신호 또는 첫 번째 숫자 묶음으로, 쉼표로 구분해 입력합니다(예:
1, 2, 3). - 두 번째 수열 — 두 번째 신호, 커널, 또는 필터로, 마찬가지로 쉼표로 구분해 입력합니다(예:
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\)인 두 유한 수열을 합성곱하면 결과는 정확히 \(n + m - 1\)개의 값을 가집니다. 각 출력값 \(y[i]\)는 두 수열의 인덱스 범위 안에 들어가는 모든 곱 \(x[j] \cdot h[i - j]\)의 합입니다. 쉽게 말해, 한 수열을 다른 수열 위로 한 칸씩 미끄러뜨리면서 겹치는 항끼리 곱하고, 매 이동 위치마다 그 값들을 모두 더하는 방식입니다.
예제로 이해하기
첫 번째 수열을 1, 2, 3, 두 번째 수열을 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을 뺀 값(\(n + m - 1\))입니다.
두 수열의 순서가 결과에 영향을 주나요? 아닙니다. 합성곱은 교환법칙이 성립하므로, 두 입력을 서로 바꿔 넣어도 같은 결과 수열이 나옵니다.
다항식 곱셈에도 사용할 수 있나요? 네. 각 수열을 다항식의 계수로 본다면, 합성곱 결과는 두 다항식을 곱한 결과의 계수가 됩니다. 신호 처리뿐 아니라 대수 계산에서도 유용한 지름길이죠.