수학 관련 알고리즘을 하다 보면 행렬의 값 대부분이 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 와 같이 일반적인 매트릭스가 되었음을 알 수 있다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB PSK(Phase-shift keying) BER simulation (13) | 2014.04.17 |
---|---|
MATLAB 원(Circle), 다각형(Polygon) 그리기 (11) | 2014.04.09 |
MATLAB sinc function (0) | 2014.04.08 |
MATLAB 16 QAM BER Simulation (8) | 2014.04.04 |
MATLAB 프랙탈(Fractal) Dragon Curve (0) | 2014.01.16 |
MATLAB 테트리스(Tetris) 게임 (0) | 2014.01.15 |
MATLAB Game Stellaria (0) | 2014.01.12 |
MATLAB FSK(Frequency Shift Keying) BER simulation (6) | 2013.12.27 |
댓글