본문 바로가기
programming language/MATLAB

MATLAB 벡터화 기법

by __observer__ 2011. 3. 14.
반응형

MATLAB 의 연산은 기본적으로 매트릭스 연산을 기본으로 한다. 따라서 매트릭스 또는 벡터의 연산에 매우 편리하도록 구성이 되어 있다. 반면에 for 나 while 같은 루프 문의 경우에는 비교적 그 처리 속도가 느린 단점이 있다. 따라서 for 나 while 같은 루프 문은 가급적이면 안 쓰는 방향으로 코딩을 하는 것이 좋다. for 나 while 같은 루프 문을 매트릭스 또는 벡터 연산으로 처리 하는 것을 벡터화 기법이라 한다.

다음 수식에 대해 M 파일 코딩을 해 보자.

 

 

위 수식에 대해 for 문을 이용해서 코딩을 하고 tic, toc 을 이용하여 처리 시간을 측정 해보자.

 

tic

sum_v=0; % sum 초기값 설정

for n = 1:100

sum_v =sum_v + n^4; % 4 승

end

fprintf('%g \n',sum_v); % 화면 출력

toc

 

위 코드를 실행하면 Command 창에 다음과 같은 결과가 나옴을 확인 할 수 있다.

2.05033e+009

Elapsed time is 0.000682 seconds.

 

이제 위 for 루프 문을 벡터화 하여 처리를 하고 그 처리 시간을 확인 해 보자.

tic

Sum_v=sum((1:100).^4); % 각 인자 값의 4승을 하기 위해 .^ 연산을 이용

fprintf('%g \n',Sum_v); % 화면 출력

toc

 

위 코드의 결과는 다음과 같다.

2.05033e+009

Elapsed time is 0.000318 seconds.

 

for 문을 이용하였을 경우 0.000682 초가 걸린 반면에 벡터화 해서 처리하는 경우 0.000318 초가 걸리는 것을 확인 할 수 있다. 위 예제는 매우 간단한 예였으므로 그 차이가 그리 크지 않지만 매우 큰 루프문을 이용할 때는 그 차이가 훨씬 더 확연하다.

반응형

댓글