Search
Duplicate

신호시스템/ Convolution

Convolution는 두 함수 ffgg를 이용하여 새로운 함수를 생성하는 과정을 의미한다. 연속 시스템에서 convolution은 다음처럼 정의된다.
(fg)(t)f(τ)g(tτ)dτ(f * g)(t) \triangleq \int_{-\infty}^{\infty} f(\tau)g(t-\tau) d\tau
한편 이산 시스템에서 convolution은 다음과 같이 정의된다.
(fg)(n)m=f[m]g[nm](f * g)(n) \triangleq \sum_{m=-\infty}^\infty f[m]g[n-m]
식을 보면 두 함수 ffgg가 반대 방향으로 진행되면서 연산이 되는 것을 볼 수 있다. 이래서 convolution 연산을 flip-and-drag 하면서 겹치는 영역에 대해 곱의 합을 구한다고 표현한다.
convolution은 서로 다른 두 파동이 합쳐지는 것으로 상상할 수 있다. 두 파동의 만나는 지점에 의해 보강 되거나 상쇄 되는데, convolution 연산으로 신호에서 특징을 강조(보강)하거나 노이즈를 제거(상쇄)할 수 있다.
특징을 강조하거나 노이즈를 제거하는 능력은 filtering이나 feature extraction으로 확장 될 수 있다.
convolution 연산에 대해 다음이 성립한다. 여기서 f,g,hf, g, h는 함수이고 aa 는 스칼라이고 dd는 미분연산이다.
fg=gff(gh)=(fg)hf(g+h)=(fg)+(fh)a(fg)=(af)g=f(ag)d(fg)=dfg=fdg\begin{aligned} f * g &= g *f \\ f * (g * h) &= (f * g) * h \\ f * (g + h) &= (f * g) + (f * h) \\ a(f * g) &= (af) * g = f * (ag) \\ d(f*g) &= df * g = f * dg \end{aligned}