본문 바로가기
programming language/MATLAB

MATLAB sparse matrix(희소 행렬)

by 남성 2014. 2. 19.

수학 관련 알고리즘을 하다 보면 행렬의 값 대부분이 0으로 채워진 행렬을 다뤄야 하는 경우가 종종 있다. 이런 행렬을 sparse matrix 라 하고 한글로는 희소 행렬이라 한다.

 

이런 경우 0 으로 채워진 부분까지 행렬로 표현하는 방법은 메모리의 낭비이다.

 

희소 행렬에 대한 설명은 아래 주소에 잘 나와 있다.

 

http://ko.wikipedia.org/wiki/%ED%9D%AC%EC%86%8C%ED%96%89%EB%A0%AC

 

오늘은 MATLAB 에서 sparse matrix를 다루는 방법에 대해 간단히 알아보려 한다.

 

우리가 알고 있는 대표적인 희소 행렬은 Identity matrix 일 것이다.

 

다음과 같이 Identity matrix 하나를 생성해 보자.

 

x=eye(100);

 

위와 같이 명령하면 100 × 100 열의 Identity matrix 가 만들어 진다.

 

다음으로 위에서 만들어진 x 를 sparse matrix로 만들어보자.

 

xsparse=sparse(x)

 

이제 메모리가 얼마나 줄었는지 확인해보자.

 

MATLAB command windows 에 whos 라는 명령어를 내리면 다음과 같이 현재 workspace의 변수 내역을 볼 수 있다.

 

 

sparse matrix로 만들면서 80000 바이트의 변수 x 가 2408 바이트의 변수 xsparse 로 바뀌는 것을 확인 할 수있다.

 

다음으로 sparse matrix를 일반적인 매트릭스로 만드는 방법은 full() 이라는 함수를 사용하면 된다.

 

 

다음과 같이 xfull 은 다시 x 와 같이 일반적인 매트릭스가 되었음을 알 수 있다.


댓글0