본문

윈도우 환경에서 Octave사용하기(With Octave-Forge)

그래프를 그려야 하는 일이 생겨서 당연하게 MATLAB을 사용하려 했었다. 인터넷에 보니 R2011b 버전이 간소화되어 포터블용으로 편집되어 돌아다니고 있었다. 용량이 1기가정도밖에 안되었고 사용상에 지장이 없었다. 그래서 계속 쓸까 하다가 문득 든 생각, MATLAB과 비슷한 프로그램이 있지 않을까? 그래서 찾다가 발견한 것이 Octave이다. 이는 GNU에서 배포되는 패키지로서 MATLAB과 상당한 호환성을 자랑한다고 하며, Linux, Mac OS 뿐만 아니라 윈도우 환경도 지원해준다.

단 윈도우 환경에서 지원해주는 Octave는 Octave-Forge 프로젝트에서 제공을 하고 있으며, Octave-Forge는 Octave에 추가할수있는 패키지들을 모아놓은 프로젝트를 의미한다. Octave-Forge 홈페이지 메인화면에 보면 Windows Installer라는 항목이 있는데 이를 클릭하여 설치파일을 다운받는다. 설치파일은 현재 버전(Octave-3.2.4_i686-pc-mingw32_gcc-4.4.0)으로 70MB도 되지않아 매우 부담이 적다. 

아무튼 설치파일을 다운받으면 이것으로 설치를 진행한다. 설치 도중에 설치옵션을 선택하는 과정이 있는데 여기서 FFTW3, ATLAS Libraries는 건드리지 않는게 좋다 왜냐하면 이것들은 설치마법사가 현재 컴퓨터에 대해 최적의 값을 찾아서 이미 선택해놓은것이기 떄문이다. 그리고 Octave Forge의 하부옵션은 딱히 설치를 하지 않아도 된다. 기본적인 기능은 Octave에 탑재되어있고 Octave Forge는 여기에서 추가적으로 실행되는것을 의미하기 떄문이다(예를들어 설치옵션에 있는 plot은 실제 plot함수와 관련된 것들에 대한것이 아니라, dfxwrite와같은 추가적인 함수에 대한 구현이다)

설치를 완료하면 바탕화면이나 시작메뉴에 Octave가 뜨게 될것이고 실행하면 아래의 그림에서의 도스화면이 출력이 된다. 여기에서 알맞은 명령을 입력하고 plot등으로 출력을 만들게 되면 외부 프로그램이 실행되어 아래와같이 결과를 보여준다. 

 
그런데 여기에서 문제가 있다. plot함수를 사용하면 바로 새창이 뜨는것이 아니라, 그 다음 라인의 실행이 끝나야지만 plot의 결과가 출력되는것이다. 마찬가지로 ylabel으로 label을 지정해주었음에도 불구하고 한번에 출력이 안되었기 때문에 쓸데없이 ylabel을 한번 더 호출한것이다. 한칸씩 결과가 밀리는걸까? 게다가 수행시에 그래프가 출력된 창을 선택하면 창이 응답없음으로 나온다(선택하기 전부터 이미 응답이 없는 상태이다) 왜 이런 현상이 발생하는지는 모르겠으나 아무튼 결과를 얻어낼 수 있으니 이로서 일단은 넘어간다. 그리고 결과를 받아왔으니 종료를 해야지, 그럴때는 모든 프로그램의 공통 명령어인 exit를 친다.

그리고 외부 매트랩 파일(.m파일)을 이용하고 싶다면 환경변수에 대해 알아본다. MATLAB에서는 Set Path의 개념으로서 라이브러리 폴더를 추가하고자 한다면 다음과 같이 입력한다. (\를 두번붙이는것에 유의한다) addpath("C:\\Octave\\mylib") 마찬가지로 이 경로 정보를 삭제하고싶다.. 하면 동일한 입력값으로 rmpath, 즉  rmpath("C:\\Octave\\mylib") 을 해주면 된다. 단 임시적으로 설정이 되는것 같아서 프로그램을 재시작하면 초기화가 된다. 자세한 사항은 http://www.gnu.org/software/octave/doc/interpreter/Manipulating-the-Load-Path.html#Manipulating-the-Load-Path 을 참조하면 좋을 것 같다.
 
그리고 Octave 프로그램에 등록된 라이브러리 디렉토리는 pathdef()를 실행하면 알 수 있다. 아래는 모든 Octave-Forge 패키지를 설치했을때 pathdef()를 실행시킨 결과이다. 즉 아래의 디렉토리내에있는 라이브러리를 사용하겠다(환경변수)라는 의미이다. 
C:\Octave\3.2.4_gcc-4.4.0\libexec\octave\3.2.4\site\oct\i686-pc-mingw32
C:\Octave\3.2.4_gcc-4.4.0\libexec\octave\site\oct\api-v37\i686-pc-mingw32
C:\Octave\3.2.4_gcc-4.4.0\libexec\octave\site\oct\i686-pc-mingw32
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\site\m
C:\Octave\3.2.4_gcc-4.4.0\share\octave\site\api-v37\m
C:\Octave\3.2.4_gcc-4.4.0\share\octave\site\m
C:\Octave\3.2.4_gcc-4.4.0\share\octave\site\m\startup
C:\Octave\3.2.4_gcc-4.4.0\libexec\octave\3.2.4\oct\i686-pc-mingw32
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\audio
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\deprecated
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\elfun
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\general
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\geometry
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\help
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\image
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\io
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\linear-algebra
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\miscellaneous
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\optimization
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\path
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\pkg
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\plot
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\polynomial
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\set
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\signal
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\sparse
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\specfun
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\special-matrix
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\startup
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\statistics
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\statistics\base
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\statistics\distributions
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\statistics\models
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\statistics\tests
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\strings
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\testfun
C:\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\time

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.