신호처리에서의 Convolution을 직관적으로 이해해보자.
Convolution이 나오게 된 이유는, 신호들 간의 관계를 파악하고 싶어서이다.
전 포스팅에서 Source와 Detected Signal은 다르다는 말을 하면서 LTI System에 대해 설명했는데,
그 LTI System을 잘 표현하기 위한 방법이 바로 Convolution이다.
앞에서 System을 알기 위해서는
impulse response = impluse * system 를 알면 된다고 했다.
이때 사용되는 연산이 바로 convolution이다.
convolution은 인풋과 아웃풋의 상관관계를 찾는것에서부터 시작한다.
인풋과 아웃풋이 얼마나 비슷한지를 system으로 나타낼 수 있지 않을까?
상관관계를 나타내는 방법은 아주 여러가지가 있겠지만.. (곱하기 더하기도로 상관관계를 나타낼수는 있다)
여기서는 Cross-correlation을 이용할 것이다
$$ r = \Sigma_{i} x_{i} y_{i} = X \cdot Y $$
즉 내적을 할 것이다. 왜냐면.. 나중에 편하기 때문이다 ㅎ
일단 아래그림을 보자
Cross correlation을 보면 g와 f가 시간에따라 얼마나 비슷한지를 나타낸다. (겹치는 넓이)
곱해서 더했으므로 앞서 말했던 내적과 의미가 같다.
그래서 Autocorrelation결과를 보면 항상 가운데 부분이 제일 큰 값을 갖는다. (자기 자신끼리 곱하므로)
이걸 수식으로 나타내면
$$ (f* g) = \Sigma_{m=0}^{N-1} f[m]g[n+m] $$
n은 f의 길이 ,m은 g의 길이라고 보면 된다. 그림에서는 n=m 으로 표현되었다.
그럼 컨볼루션의 수식은?
$$ (f * g) = \Sigma_{m=0}^{N-1} f[m]g[n-m] $$
뭐가 바뀌었는지 모를정도다. + 가 -로 바뀌었다. 그런데 왜 바꾼걸까?
이부분이 살짝 이해하기 힘든데, 직관적으로 생각해보자면 이렇다.
가로축은 t 시간을 의미한다. 다시말해서 t가 작을수록 먼저 생긴신호라는 뜻이다. g(세모)의 신호를 실시간으로 관측해보면 0이었다가 팍 튀었다가 서서히 감소해서 다시 0이되는 신호일것이다.
그럼 시스템을 지나갈때 먼저 만나는 부분은 세모의 왼쪽편(직각인부분)이 될 것이다.
그렇기 때문에 g(세모)가 f(네모)를 지나간다고하면 제일 먼저 마주치는 부분은 g(세모)의 왼쪽 부분이된다.
하지만 cross correlation 수식을 보면 모서리부터 만난다. 반대로 되어있다.
그래서 +를 -로 뒤집어준게 convolution이다...(허무'ㅅ';;)
이런 특징 때문에 convolution에서 f*g와 g*f는 다르다고 볼 수 있다.
참고로 컨볼루션을 두개가 만나야 생기기때문에 N+M-1의 길이를 갖는다
정리하자면, 결국에 의미는 똑같다. 시간에따라 신호간의 비슷한 정도를 나타내는것!
그래서 컨볼루션은 System을 분석하기에 매우 용이하고, 수학적으로도 엄청나게 유용한 특징을 갖는다.
증명은 구글이 알려줄 것이다
시간 domain에서 convolution은 좀 복잡하다.. 뒤집어서...곱해서...더해..으으..
하지만 푸리에 변환을 통해 주파수 domain으로 바꿔주면 그냥 곱하기 연산이된다!! 갓갓푸리에
이걸활용해서 필터도 설계해서 아웃풋을 원하는대로 조정하고 암튼 아주 유용하다
다시 전 포스팅에서 했던 얘기를 반복해보자면..
만약에 input * (?) = input 이라면 이건 어떤 의미일까?
(?)가 impulse라는 뜻이다. impulse는 t=0일때 y=1, t=/=0일때 y=0 인 신호를 의미한다.
그렇다면 이 impulse를 이용해서 system 모양도 알 수 있지 않을까?
알고싶은 시스템 * impulse = 알고싶은 시스템 !!!!!!
이렇게 우리는 그토록 원하던 시스템의 정체를 파악 할 수 있게되었다.
'Study > 신호처리' 카테고리의 다른 글
LTI System 이해 (0) | 2019.12.06 |
---|
댓글