반응형
요즘 부쩍 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 |
댓글