본문 바로가기
programming language/MATLAB

MATLAB convolution

by 남성 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
MATLAB convolution  (0) 2011.11.20
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

댓글0