이 계산기는 무엇을 하나요?
선형 컨볼루션 계산기는 두 개의 이산 수열을 받아 이산 선형 컨볼루션(합성곱) 연산으로 결합합니다. 컨볼루션은 디지털 신호 처리(DSP)의 핵심 도구로, 선형 시불변(LTI) 시스템의 입력 신호와 임펄스 응답을 알고 있을 때 그 출력을 구하는 데 사용됩니다. 두 숫자 수열을 입력하면 합성곱이 완료된 전체 수열과 함께 최댓값·최솟값까지 즉시 확인할 수 있습니다.
사용 방법
입력란은 단 두 개입니다.
- 첫 번째 수열 – 입력 신호 x로, 쉼표로 구분된 숫자로 입력합니다. 예:
1, 2, 3 - 두 번째 수열 – 두 번째 신호 h(주로 임펄스 응답)입니다. 예:
0, 1, 0.5
소수와 음수 모두 지원합니다. 각 값은 공백이 자동으로 제거된 뒤 숫자로 해석되므로 띄어쓰기는 신경 쓰지 않아도 됩니다.
계산 공식
이산 선형 컨볼루션은 다음과 같이 정의됩니다.
$$y[n] = \sum_{k} x[k] \cdot h[n-k]$$실제로 이 계산기는 직접 이중 루프 방식으로 이를 구현합니다. 첫 번째 수열의 모든 원소를 두 번째 수열의 모든 원소와 곱하고, 각 곱 \(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입니다.
자주 묻는 질문
결과 수열의 길이는 얼마인가요? 언제나 두 입력 수열 길이의 합에서 1을 뺀 값입니다. 4개짜리와 3개짜리 수열을 합성곱하면 6개의 값이 나옵니다.
수열의 순서가 결과에 영향을 주나요? 아닙니다. 컨볼루션은 교환 법칙이 성립하므로 첫 번째 수열과 두 번째 수열을 바꿔도 결과 수열은 동일합니다.
상호상관(cross-correlation)과 같은 건가요? 아닙니다. 컨볼루션은 슬라이딩하기 전에 한쪽 수열을 뒤집습니다(\(h[n - k]\) 항). 반면 상호상관은 뒤집지 않습니다. 한 수열이 대칭이 아닌 한 두 연산의 결과는 서로 다릅니다.