본문 바로가기
programming language/MATLAB

MATLAB Convolution index 계산

by 남성 2015. 10. 16.

신호 처리에서 convolution은 필터링의 기본이 되는 만큼 매우 자주 사용하게 되는데요~

 

아래 글에서는 MATLAB conv() 함수를 사용하는 게 아닌 for 문을 사용해서 Convolution 을 수행하는 방법에 대해 소개한 적이 있고~

 

http://iamaman.tistory.com/317

 

아래 글에서는 FFT 를 활용하여 convolution 을 하는 방법에 대해 소개한 적이 있습니다.

 

http://iamaman.tistory.com/131

 

오늘은 convolution 수행 시 인덱스를 계산하는 방법에 대해 소개하려 합니다.

 

보통 conv() 함수는 convolution을 수행한 결과만 나오게 됩니다.

 

그런데 신호 및 시스템이나 DSP 등의 과목에서 convolution을 배울 때는 인덱스도 나오게 되죠~

 

다음과 같은 신호 x(n), h(n) 에 대해 convolution 을 수행해 보면~

 

x=ones(1,11);

nx = -5:5;

 

h=linspace(0,5,10);

nh = 0:9;

 

plot(nx,x,nh,h),grid on

legend('x','h','Location','northwest')

axis([-10 10 0 10])

 

 

다음과 같이 인덱스를 포함한 convolution 수행 코드를 작성 할 수 있습니다.

 

function [y, ny] = conv_m(x,nx,h,nh) 

diff1 = (nx(2)-nx(1));

diff2 = (nh(2)-nh(1));


assert(abs(diff1 - diff2) <= eps,'Time difference is not equal!!')

   

ny= linspace((nh(1)+nx(1)),(nh(end)+nx(end)),length(x)+length(h)-1);


y = conv(x,h);

 

위 conv_m() 함수를 사용하여 위에서 소개한 x(n), h(n) 에 대한 convolution 을 수행하면

 

[y, ny] = conv_m(x,nx,h,nh);

plot(ny,y),grid on

legend('Convolution Result','Location','northwest')

 

인덱스가 -5~14까지 인 다음과 같은 결과나 나오는 것을 확인 할 수 있습니다.

 

인덱스를 포함한 Convolution~ 참 쉽죠~



댓글2