신호 처리에서 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~ 참 쉽죠~
'programming language > MATLAB' 카테고리의 다른 글
MATLAB Exponential random variable generation (14) | 2016.01.13 |
---|---|
MATLAB을 사용한 파일 내용 검색하기 grep() (0) | 2015.10.26 |
MATLAB Dependency 파일 모두 압축하기~ (0) | 2015.10.20 |
MATLAB Symbolic Math Toolbox C code generation (0) | 2015.10.16 |
MATLAB strjoin 함수를 사용한 string 붙이기 (0) | 2015.10.12 |
MathJax 를 활용한 MATLAB 수식 입력 (0) | 2015.10.08 |
MATLAB 에서 MinGW-w64 Compiler 사용하기 (0) | 2015.10.07 |
MATLAB 다차원 Newton’s Method (4) | 2015.09.30 |
댓글