본문 바로가기
programming language/MATLAB

MATLAB convolution

by __observer__ 2011. 11. 20.
반응형

요즘 부쩍 MATLAB for 문을 이용한 convolution 에 대한 질문이 많이 들어오는군요.

 

그래서 오늘은 MATLAB for loop 를 이용한 convolution 에 대해 설명 드리려 합니다.

 

다들 아시는 바와 같이 MATLAB 에는 기본적으로 convolution 을 수행하는 함수인 conv() 라는 함수가 존재 합니다.

 

c=conv(a, b) 와 같은 형태로 쓰이곤 합니다.

 

당연히 a 와 b 의 convolution결과를 c 에 리턴 하는 함수이죠

 

convolution 이라는 것이 결국에는 FIR filter 와 같다고 보셔도 무방 합니다.

 

다만 그 return 되는 값의 길이에 있어서 차이가 있죠.

 

이는 filter 의 shift register 를 다시 0으로 채워주는 과정이 추가가 되기 때문 입니다.

 

convolution 을 for loop 를 이용해서 구현해 보면 다음과 같습니다. 

 

위 에서 a, b 는 둘 다 length가 3 이므로convolution 결과는 3+3-1=5 길이가 되게 됩니다.

 

단순히 buffer 를 시프트 하고 곱하고 더하고 하는 과정이니 코드를 보시면 쉽게 아실 수 있을 겁니다.

 

결과는 다음과 같습니다.

 

 

conv() 함수를 이용하였을 경우와 for loop 를 이용하였을 경우의 결과가 같음을 확인 할 수 있습니다.


반응형

'programming language > MATLAB' 카테고리의 다른 글

MATLAB GUI  (4) 2012.02.24
MATLAB figure ButtonDownFcn  (0) 2012.02.22
Simulink Algebraic Loop  (0) 2012.02.13
MATLAB dos 명령 사용하기  (0) 2011.12.21
Window command 에서 MATLAB 실행 방법  (0) 2011.11.20
MATLAB, end 를 이용한 데이터 추가  (1) 2011.11.18
MATLAB 집합 관련 함수들  (0) 2011.06.13
MATLAB plot tools  (0) 2011.05.26

댓글