본문 바로가기
programming language/Octave

OCTAVE Command Line argument 사용 방법

by 남성 2019. 8. 3.

회사에서 사용하는 제 컴퓨터에는 MATLAB 이 설치가 되어 있지만, MATLAB이 설치가 안 된 PC에서는 OCTAVE 를 주로 사용하고 있습니다. OCTAVE 는 MATLAB 과 거의 유사한 문법을 사용하고 있어서 MATLAB 에서 사용하던 코드의 대부분을 재사용 할 수 있습니다.

저는 최근에는 주로 실험 데이터에 대해 분석하는 용도로 MATLAB, OCTAVE 를 사용하고 있고 데이터는 장비에서 주로 CSV 파일 형태로 로깅을 하고 있습니다. CSV 형태로 로깅된 파일을 분석하기 위해서는 OCTAVE 에 해당 csv 파일의 경로를 알려줘야 합니다. 그래야 읽을 수 있을 테니까요~

매번 경로를 m 파일에 적어 주는 것도 가능 하지만 파일을 매번 열어서 적는것도 굉장히 귀찮은 일인 것 같습니다. 이럴 때 주로 아규먼트를 사용하고~ 오늘은 Command Line 에서 OCTAVE 아규먼트 사용 방법에 대해서 소개하려 합니다.

일단 커맨드라인에서 옥타브를 실행하기 위해서 OCTAVE 실행 명령을 알아야 될 겁니다. 아래 그림과 같이 옥타브 바로가기 아이콘에 오른쪽 클릭을 하고 속성을 확인해 보면~ 명령어가 나옵니다.

OCTAVE CLI 를 실행하는 명령어는 아래와 같고~

%SYSTEMROOT%\system32\wscript.exe "C:\Octave\Octave-5.1.0.0\octave.vbs" --no-gui

OCTAVE GUI 를 실행하는 명령어는 아래와 같습니다.

%SYSTEMROOT%\system32\wscript.exe "C:\Octave\Octave-5.1.0.0\octave.vbs" --force-gui

제 컴퓨터에서 실행을 해보니 앞에 붙어 있는 wscript.exe 까지의 구문은 없어도 실행이 되더군요~ 따라서 아래와 같이 실행할 수 있었습니다.

CLI : "C:\Octave\Octave-5.1.0.0\octave.vbs" --no-gui

GUI : "C:\Octave\Octave-5.1.0.0\octave.vbs" --force-gui

OCTAVE Command Line Options 관련 문서는 아래 주소에서 확인할 수 있습니다.

http://octave.org/doc/interpreter/Command-Line-Options.html

다른 것들은 필요할 때마다 검색을 해 보시면 될 거 같고~ 커맨드 라인에서 m 파일을 실행하기 위해서는 위 옥타브 실행명령어 뒤에 m 파일의 path 를 넣으면 되고~ m 파일에서 받고 싶은 아규먼트는 또 그 뒤에 적어 주면 됩니다. 따라서 아래와 같은 명령 형태가 됩니다. 아규먼트는 공백을 구분자로 하기 때문에~ 추가적인 아규먼트가 있다면~ 한 칸 띄고 계속 써 주면 됩니다. 혹시 path 에 공백이 있는 경우에는 전체 path 를 쌍따옴표로 감싸서 넣어 주면 됩니다.

"C:\Octave\Octave-5.1.0.0\octave.vbs" --no-gui mFILEPATH csvFILEPATH

m 파일에서 argument 는 argv() 를 통해 받을 수 있습니다. argv() 는 Cell 타입을 리턴합니다.

저는 아래와 같이 간단하게 test.m 파일을 만들어 봤고~

argvsV= argv()

class(argvsV)

csvPath=argv(){1}

pause(5)

Windows CMD 창에서 아래와 같은 명령어로 실행해 봤습니다.

"C:\Octave\Octave-5.1.0.0\octave.vbs" --no-gui test.m test.csv

그럼 새로운 CMD 창이 뜨면서 아래와 같이 옥타브 실행 결과를 볼 수가 있습니다.

커맨드 라인에서 위와 같은 명령어를 계속 타이핑 하는 것은 불편하므로 아래 포스팅을 참조하여 배치 파일을 만들어서 사용하는게 훨씬 더 간편 할 것입니다.

https://iamaman.tistory.com/988

많은 분들이 모르시는 것 같은데… 배치 파일 또는 실행 파일에 파일을 drag & drop 하면 해당 실행 파일의 아규먼트로 들어가게 됩니다.



댓글0