본문 바로가기
AI 딥러닝/DLA

[CNN] LTI 시스템과 컨볼루션

by 깊은대학 2020. 7. 23.

이제 선형 시불변(LTI) 시스템을 알았으니 LTI 시스템에 임의의 입력 \( x[n] \) 을 가했을 때 출력 \( y[n] \) 이 어떻게 계산되는지 알아보자. 그 전에 먼저 특별한 입력 신호인 임펄스(impulse) 신호에 대해 알아보자.

 

 

임펄스 신호는 \( n=0 \) 일 때만 크기가 1 이고, \( n \ne 0 \) 에서는 크기가 모두 0 인 신호다. 기호로 \( \delta [n] \) 라 쓴다. 크기가 1 이므로 단위 임펄스라고 하기도 한다. 임펄스를 수식으로 표현하면 다음과 같다.

 

\[ \delta [n]= \begin{cases} 1, & \mbox{if }n=0 \\ 0, & \mbox{if }n \ne 0 \end{cases} \]

 

그림으로 표현하면 다음과 같다.

 

 

임펄스 신호를 오른쪽으로 \( n_0 \) 만큼 시프트(shift)시킨 신호는 \( \delta [n-n_0] \) 이다. 임펄스 신호를 왼쪽으로 \( n_0 \) 만큼 시프트 시킨 신호는 \( \delta [n+n_0] \) 이다. 아래 다음의 왼쪽은 \( \delta [n-n_0] \) 를 오른쪽은 \( \delta [n+n_0] \) 를 그린 것이다.

 

 

다음 그림과 같이 임의의 입력 신호 \( x[n] \) 이 있다고 하자.

 

 

그러면 임의의 입력 신호 \( x[n] \) 을 다음과 같이 임펄스 신호를 이용한 수식으로 표현할 수 있다.

 

\[ x[n] = \ \cdots + x[-2] \delta [n+2] + x[-1] \delta [n+1] + x[0] \delta [n] + x[1] \delta [n-1]+\cdots \]

 

위 식은 덧셈이 무한히 이어지는 식이라서 쓰기 불편하므로 시그마 기호를 이용해서 간단하게 다음과 같이 표현해 보자.

 

\[ x[n] = \sum_{k= - \infty }^{\infty} x[k] \delta [n-k] \]

 

임펄스 신호의 특성상 \( k=n \) 에서만 \( \delta [n-k] = 1 \) 이고 나머지는 모두 0 이므로 위 식의 좌우변이 같다는 것을 알 수 있다.

하지만 구체적인 값을 넣어서 위 식이 맞는지 확인해 보자. 먼저 \( n=0 \) 을 대입해 보면 위 식은

 

\[ \begin{align} x[0] &= \sum_{k= - \infty }^{\infty} x[k] \delta [-k] \\ \\ &= \ \cdots + x[-2] \delta [2] + x[-1] \delta [1] + x[0] \delta [0] + x[1] \delta [1]+\cdots \end{align} \]

 

이 된다. 임펄스 함수는 \( \delta [0] = 1 \) 이고 나머지는 모두 0 이므로 위 식의 좌우변은 모두 \( x[0] \) 으로 동일하다. 이번에는 \( n=2 \) 를 대입해 보자. 그러면

 

\[ \begin{align} x[2] &= \sum_{k= - \infty }^{\infty} x[k] \delta [2-k] \\ \\ &= \ \cdots + x[-2] \delta [4] + x[-1] \delta [3] + x[0] \delta [2] + x[1] \delta [1] + x[2] \delta [0] +\cdots \end{align} \]

 

가 되므로 역시 위 식의 좌우변은 모두 \( x[2] \) 로 동일하다는 것을 알 수 있다.

이제 임펄스를 LTI 시스템의 입력으로 가해보자. 이 때 출력을 임펄스 반응이라고 하며 기호로 \( h[n] \) 이라 쓴다.

 

임펄스 반응

 

수식으로 표현하면 다음과 같다.

 

\[ h[n] =\mathbb{F} (\delta [n] ) \]

 

만약 시스템이 시불변이라면 시프트된 임펄스 반응은 다음과 같이 된다.

 

\[ h[n-n_0] =\mathbb{F} (\delta [n-n_0] ) \]

 

이제 시스템에 임의의 입력 \( x[n] \) 을 가했을 때 출력을 수식으로 써보자.

 

\[ y[n] =\mathbb{F} (x [n] ) \]

 

임의의 입력 신호 \( x[n] \) 을 임펄스 신호를 이용한 수식으로 표현할 수 있다고 했으므로, 위 식은 다음과 같이 쓸 수 있다.

 

\[ \begin{align} y[n] &= \mathbb{F} (x[n]) \\ \\ &= \mathbb{F} (\ \cdots + x[-2] \delta [n+2] + x[-1] \delta [n+1] + x[0] \delta [n] + x[1] \delta [n-1]+\cdots \ ) \\ \\ &= \mathbb{F} ( \sum_{k= - \infty }^{\infty} x[k] \delta [n-k] \ ) \end{align} \]

 

만약 시스템이 선형이라면, 중첩의 원리가 적용되므로 위 식은 다음과 같이 된다.

 

\[ \begin{align} y[n] &= \ \cdots + x[-2] \ \mathbb{F}( \delta [n+2] ) + x[-1] \ \mathbb{F} ( \delta [n+1] ) + x[0] \ \mathbb{F} ( \delta [n] ) + x[1] \ \mathbb{F} ( \delta [n-1] ) + \cdots \ \\ \\ &= \sum_{k= - \infty }^{\infty} x[k] \ \mathbb{F} ( \delta [n-k] \ ) \end{align} \]

 

또한 이에 덧붙여서 시스템이 시불변이라면 위 시스템은 다음과 같이 된다.

 

\[ \begin{align} y[n] &= \ \cdots + x[-2] \ h[n+2] + x[-1] \ h[n+1] + x[0] \ h[n] + x[1] \ h[n-1] + \cdots \ \\ \\ &= \sum_{k= - \infty }^{\infty} x[k] \ h[n-k] \end{align} \]

 

따라서 LTI 시스템의 입력이 \( x[n] \) 일 때 출력 \( y[n] \) 은 다음과 같이 된다.

 

\[ \begin{align} y[n] &= \sum_{k= - \infty }^{\infty} x[k] \ h[n-k] \\ \\ &= \sum_{k= - \infty }^{\infty} h[n-k] x[k] \end{align} \]

 

여기서 컨볼루션을 다음과 같이 정의하면,

 

\[ h[n] * x[n] = \sum_{k= - \infty }^{\infty} h[n-k] x[k] \]

 

LTI 시스템의 출력은 시스템의 임펄스 반응과 입력의 컨볼루션이다.

 

\[ y[n] = h[n] * x[n] \]

 

드디어 컨볼루션의 쓰임새가 나왔다.

 

“LTI 시스템의 출력은

시스템의 임펄스 반응과 입력의

컨볼루션이다.”

 

컨볼루션은 LTI 시스템에서 입력과 출력을 매핑해 준다. 매핑은 시스템의 임펄스 반응을 매개로 한다. 따라서 LTI 시스템의 임펄스 반응에는 시스템의 모든 정보가 담겨져 있다고 할 수 있다. LTI 시스템의 임펄스 반응은 시스템 그 자체인 것이다.

 

 

다음 포스트에서는 컨볼루션을 어떻게 계산하는지 알아보겠다.

댓글