MATLAB 에디터에서 코드를 작성하고 해당 코드에 대해서 문서를 생성할때 MATLAB 에디터의 퍼블리시 기능을 사용하곤 합니다. MATLAB 퍼블리시에서는 코드에 대해서 html, xml, latex, doc, ppt, pdf 등으로 문서를 생성해 줍니다. 퍼블리시 창에서 작업 폴더나 몇몇 옵션 등을 변경해 줄 수 있지만 사용 방법은 그냥 버튼 하나만 누르면 되기 때문에 뭐 그리 설명할게 없을 것 같습니다.

MATLAB Command Window 에서 문서를 생성하기 위해서는 아래와 같이 publish 명령어를 사용하면 됩니다. 첫 번째 인자로 파일명을 넣어 주고 두 번째 인자로 생성 하고자 하는 문서의 형태를 넣어주면 됩니다.

publish(‘publishTest.m’, ’doc’);

그런데 이렇게 간단한 문서 생성 방법도 코드가 잘못된 경우에는 생성이 잘 안 되는 경우가 있습니다.

바로 아래의 코드 예와 같이 루프문 안에 %% 기호로 된 섹션이 있는 경우에는 문서 생성이 굉장히 오래 걸리는 것을 볼 수가 있었습니다. 따라서 문서 생성을 위해서는 코드의 루프문 안에는 %% 기호를 사용해선 안됩니다.

루프 문 안에 있던 %% 섹션 표시를 % 주석으로 처리하고 문서 생성을 하니 정상적인 속도로 문서가 생성 되더군요.

문서 생성 결과를 보면 %% 로 된 섹션 표시는 하나의 챕터를 표시하는 것을 알 수가 있습니다.

For 문 안에 섹션 표시가 있으면 해당 섹션 부분을 문서의 목차에 계속해서 표시하게 될 것이므로 문제가 될 것입니다. 아마도 publish 기능에 루프 문안의 섹션에 대한 예외 처리는 안되어 있는것으로 생각되네요.




MATLAB 에서 바로가기를 통해 작업 폴더에 접근하면 작업 폴더에 조금 더 효율적으로 접근 할 수 있습니다.

이에 관련된 내용들에 대해서는 아래 포스팅에서 설명한 적이 있습니다. 


그런데 이러한 셋팅 파일들의 경우 보통 C 드라이브에 저장이 되기 때문에 컴퓨터를 포멧하거나 하면 설정들이 날아가 버려서 다시 설정해야 합니다. 

바로가기가 한 두개라면 쉽게 복구 가능 하겠지만 저 처럼 바로가기를 많이 사용 하시는 분들이라면 바로가기를 백업 해 놓는게 좋을 겁니다.

MATLAB 설정 관련된 파일들은 아래 폴더에서 확인 할 수 있습니다.

MATLAB Command Window 에서 prefdir 라고 타이핑 하면 아래와 같이 설정 파일들이 들어 있는 폴더가 나옵니다.

prefdir

ans =

C:\Users\userNAME\AppData\Roaming\MathWorks\MATLAB\R2016b

위 디렉토리 명에서 userNAME사용자 아이디를 의미 합니다.

  • 바로가기는 shortcuts_2.xml 라는 파일에 저장 됩니다. 

shortcuts_2.xml 파일을 백업했다가 MATLAB 재 설치시 prefdir 에 저장해 주면 됩니다.

백업하는게 귀찮으신 분들은 D:\ 와 같이 포멧하지 않는 폴더에 shortcuts_2.xml 파일을 만들고 prefdir 폴더에 symbolic link 로 만들어도 될 겁니다. 

  • 빠른 액세스 도구 모음의 경우 MATLABQuickAccess.xml 파일에 저장 됩니다. 

마찮가지로 해당 파일을 백업을 해 뒀다가 향후 MATLAB 재 설치시 다시 사용한다면 편리하게 사용 하실 수 있을 겁니다.


아래 포스팅에서 MATLAB 시작시 스크립트 실행 방법에 대해 소개한 적이 있습니다.

http://iamaman.tistory.com/995

 

이와 비슷하게 MATLAB 을 종료 할 때 스크립트를 실행하도록 하는 방법에 대해 소개하려 합니다.

 

MATLAB 의 path 에 finish.m 파일을 설정해 놓으면 MATLAB 을 닫을 때 마다 해당 파일이 실행됩니다.

 

finish.m 파일 설정 관련 매뉴얼은 아래 주소에 있습니다.

 

http://kr.mathworks.com/help/matlab/ref/finish.html

 

MATLAB Command Window 에 path 라고 타이핑 하면 설정된 path 를 쉽게 확인 할 수 있고~

 

path 를 추가하기 위해서는 Command Window 에 pathtool 이라고 타이핑 하면 path 설정 툴이 나타나면 여기에 finish.m 파일을 저장할 폴더를 저장하면 됩니다.

 

finish.m 파일은 보통 설정이나 workspace 변수 값 등을 저장하는데 사용되며

 

저는 보통 아래와 같이 MATLAB path 를 파일로 저장하도록 설정해서 사용합니다.

 

disp(getString(message('MATLAB:finishsav:SavingWorkspaceData')));

savepath D:\pathdef.m

 

finish.m 파일을 위와 같이 작성하고 MATLAB 을 닫아 보면~

 

아래 그림과 같이 "작업 공간 데이터 저장 중" 이라는 메시지가 나오고~ path 변수들이 D:\pathdef.m 파일에 저장된 후 MATLAB 이 종료 됩니다.

 


보통 윈도우 환경에서 MATLAB 에서 컴파일러 사용시 Microsoft windows SDK 를 주로 사용하곤 하는데~

 

아래 글을 보니 윈도우 환경에서 아래 글에서 소개드렸던 MinGW 를 사용 할 수도 있더군요.

 

http://kr.mathworks.com/help/matlab/matlab_external/install-mingw-support-package.html

 

일단 MinGW 를 설치해야는데~ 위 주소에 있는 바와 같이 홈 화면에 있는 Add-Ons을 통해 설치 할 수 있습니다.

 

아래 그림과 같이 MinGW 를 선택해서 Add 를 누르면 설치가 되더군요.

 

 

설치시 주의 할 점은 아래 그림과 같이 아래 그림과 같이 체크를 해제 해야 한다는 겁니다.


 

다음으로 MinGW 설치 폴더의 경로에는 스페이스가 있어서는 안 된다는 것입니다. 위 주소의 매뉴얼에 따르면 "C:\TDM-GCC-64" 와 같이 공백이 없게 해야 한다고 합니다.

 

저는 현재 R2015b 버전을 사용 중이고 아래 그림과 같이 MinGW 와 Microsoft windows SDK 를 사용 중입니다.

 




Command window 에서 mex –setup 을 하고~ 사용하기 원하는 컴파일러를 클릭해서 선택 할 수 있습니다.

 

다음으로 위 주소에 나와 있던 예제를 돌려 봤습니다.

 

코든느 아래와 같습니다. 위 주소에 나와 있는 그대로 입니다.

 

copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),'.','f')

mex yprime.c % yprime.mexw64 파일을 만들어 냄

yprime(1,1:4)

 

다음과 같이 실행 되는 것을 확인 했습니다.

 

>> yprime(1,1:4)

ans =

 

2.0000 8.9685 4.0000 -1.0947

 

yprime.c파일을 확인하면 mex 파일을 만들어서 MATLAB 에서 C 함수를 사용하는 방법을 알 수 있을 겁니다.

 

필요하실 분들을 위해 yprime.mexw64 파일도 첨부합니다.

 


yprime.mexw64

관련 글 : http://iamaman.tistory.com/1664


리눅스 쉘을 자주 사용하시는 분들은 쉘에서 파일의 내용을 보기 위해 cat 과 같은 명령어를 주로 사용 하실 겁니다.

 

MATLAB 에서 파일을 열대는 open() 이라는 명령을 사용하거나 파일을 더블 클릭해서 파일을 여는데~

 

그냥 간단하게 command window 에서 파일의 내용을 확인 하고 싶을 때는 type 이라는 명령어를 사용합니다.

 

아래는 type 의 사용 예입니다. type f_func.m 라는 명령어를 통해 f_func.m 파일의 내용을 명령 창에서 확인 하는 겁니다.


 

 

그런데 가끔은 파일의 내용과 라인 넘버를 같이 보고 싶은 경우가 있습니다. 이러한 경우 MATLAB 에서는 dbtype 이라는 명령어를 사용 합니다.

 

다음과 같이 dbtype f_func.m 이라고 명령 하면 f_func.m 파일의 내용과 라인 넘버를 같이 보여주는 것을 확인 할 수 있습니다.




MATLAB 을 사용하면서 이전에 Perl 을 실행 시킬 수 있다는 포스팅을 한 적이 있습니다.

 

http://iamaman.tistory.com/170

 

그런데 요즘은 Perl 보다도 많은 사람들이 Python 을 많이 사용하는 것 같은데 왜 MATLAB 에서 파이썬이 실행이 안될까 궁금하더군요.

   

MATLAB 최신 버전을 찾아보니 역시나 MATLAB 에서 Python 역시도 실행이 되더군요.

 

저는 현재 Anaconda를 설치해서 사용 중이며 python 3.4 버전을 설치해서 사용 중입니다.

 

Default setting 으로 Anaconda 를 설치하면 C:\Anaconda3\python.exe 에 설치가 됩니다.

 

MATLAB command window 에서 pyversion 이라는 명령을 사용하면 현재 MATLAB 에서 인식 되는 파이썬 버전과 실행 및 라이브러리 파일, 로드 여부가 표시 됩니다.



 

일단 자신의 윈도우 버전에 맞게 파이썬을 설치 해야 합니다. 즉 32비트 OS 면 32비트 파이썬을 설치해야 하고 64비트 OS 인 경우에는 64비트 파이썬을 설치해서 사용해야 정상적으로 인식 됩니다.

 

저처럼 Anaconda 와 같은 툴을 설치해서 사용하거나 아님 아래 주소에서 파이썬을 다운로드 받아서 설치하면 됩니다.

https://www.python.org/downloads/

 

요즘은 default 로 파이썬을 설치하면 path 환경 변수에 파이썬 폴더가 추가가 되는데~ path 에 추가가 되지 않아서 MATLAB 에서 인식이 안 되는 경우에는 다음과 같은 방법을 사용 할 수 있습니다.

 

pyversion < Python.exe Path >

ex) pyversion C:\Anaconda3\python.exe

 

다양한 파이썬 버전을 설치해서 사용하시는 경우 위 방법으로 사용하고자 하는 파이썬을 잡아 주면 됩니다.

 

다음으로 MATLAB 에서는 다음과 같이 python 명령을 사용해 보죠~

 

F = py.os.listdir('C:\Windows')

 


파이썬을 아시는 분은 아시겠지만 위 명령은 C:\Windows의 파일 리스트를 출력하는 명령 입니다.

 

위 예를 보면 아시겠지만 MATLAB 에서 파이썬 명령을 사용하기 위해서는 py 라는 키워드를 사용합니다.

 

저는 위 명령어가 다음과 같이 실행이 되네요.



MATLAB Command Window 를 사용하다보면 이전 명령들을 다시 실행하고 싶은 경우가 많은데요.

 

이런 경우에는 Command Window 에서 위 아래 화살표를 눌러서 이전 또는 다음 명령어를 실행 시키곤 하는데~

 

Command Window 에서 실행했던 명령어들은 보통 Command History 에 저장이 되므로 command history 에서 해당 명령어를 더블 클릭해서 재실행 할 수 있습니다.

 

그런데 최근에 MATLAB 을 사용하다 보니 Default Layout 에서 Command History 가 안 나오더군요.

 

그래서 명령어를 찾아보니 아래 그림과 같이 Command Window 에서 commandhistory 라는 명령어를 타이핑 하면 Command History 가 나오게 됩니다.

 

처음에 Command History 가 나올 때는 위 그림과 같이 floating 된 형태로 나오게 되는데~ 아래 그림과 같이 도킹을 클릭하거나 Ctrl + Shift + D를 누르면 ~

 

아래 그림과 같이 MATLAB Desktop 에 도킹되는 것을 확인 할 수 있습니다.

신호처리 등을 배우다 보면 많이 접하는 함수가 바로 dirac delta 함수다

 

아래 주소에 dirac delta 함수에 대해 장황하게 소개 하고 있으니 dirac delta함수에 대해 모르시는 분들은 참조하시길~

 

http://ko.wikipedia.org/wiki/%EB%94%94%EB%9E%99_%EB%8D%B8%ED%83%80_%ED%95%A8%EC%88%98

 

dirac delta 함수는 그 값이 0 일때 무한대의 값을 갖고 그렇지 않은 경우에는 0 을 갖는 매우 단순한 함수이다.

 

MATLAB 에서는 Symbolic Math Toolbox 가 설치되어 있다면 direc()함수를 사용할 수 있다.

 

Symbolic Math Toolbox 가 설치되어 있지 않다면 매우 간단한 함수이므로 다음과 같이 만들어서 사용하면 될 것이다.

 

함수를 만들 줄 도 모르는 초보들을 위해 파일도 올린다.


deltafnc.m 

function y=deltafnc(x)

 

if x==0

    y=inf;

else

    y=0;

end

 

Command Window 에서 다음과 같이 사용하면 된다.

 

>> deltafnc(1)

 

ans =

 

0

 

>> deltafnc(0)

 

ans =

 

Inf

 

youtube 를 보다 보면 정말 주옥 같은 동영상이 많이 있죠~

 

그리고 파일로 다운로드 받고 싶은 경우도 많구요~

 

이런 경우 유투브 동영상을 다운로드 하는 여러가지 툴들이 있는데 그 중에 오늘은 command window 에서 간단하게 명령어로 다운로드 받을 수 있는~ youtube-dl 에 대해 소개하려 합니다.

 

youtube-dl 은 우분투와 같은 리눅스에서는 apt-get 명령어를 이용하여 간단하게 다운로드 받을 수 있고~

 

윈도우에서는 youtube-dl 홈페이지에서 접속해서 아래 그림과 같이 다운로드 받으시면 됩니다.

 

http://rg3.github.io/youtube-dl/download.html

 

 

다운로드 받은 youtube-dl.exe 파일을 C:\Windows 와 같이 윈도우 path 로 지정된 폴더에 넣어서 사용할 수 있습니다.

 

또는 아래 소개 드린 chocolatey 를 사용하여 명령어로 간단하게 설치 할 수도 있습니다.

  

2014/05/25 - [컴퓨터일반] - 윈도우 프로그램을 쉽게 설치해 보자~ chocolatey

 

cinst youtube-dl

 

chocolatey를 사용해서 설치 한 경우 C:\Chocolatey\lib 폴더에 설치가 되고~ C:\Chocolatey\bin 폴더에 bat 파일이 생성됩니다.

 

설치를 다 했으면 유투브 동영상을 다운로드 받아 볼까요~

 

유투브에서 다운로드 받고 싶은 동영상을 찾은 다음에~

 

아래 그림과 같이 동영상의 주소를 복사 합니다.

 

다음으로 command window 를 열고 아래와 같이 명령어를 칩니다.

 

youtube-dl –o abc.avi 유투브주소

OR

youtube-dl 유투브주소

 

위 명령어서에서 보면 –o 옵션을 줘서 다운로드 받을 파일 이름과 확장자를 지정 할 수도 있고~ 그냥 주소만 넣는 경우 원본 형식대로 다운로드 됩니다.

 

참 쉽죠~

  1. reddog 2015.01.27 23:03

    사용하려고 하면 ERROR: unable to open for writing: [Errno 13] Permission denied 라는 글이 뜨면서 안되는데요..
    어떻게해야하나요??ㅠㅠ

    • 남성 2015.01.27 23:27 신고

      동영상 중에는 다운로드가 막힌 것들도 있더군요. 유명하지 않은 동영상들에 대해 시도해 보시길 아래 유투브 주소는 테스트 해보니 정상적으로 다운로드가 되더군요.

      https://www.youtube.com/watch?v=77AyTV-L-6I

      위 주소에 대해 안된다면 설치가 뭔가 이상한 듯 합니다.

  2. reddog 2015.01.27 23:45

    음~~ 그주소도 안되네요
    말씀하신대로 c:\windows 폴더에 넣었는데 혹시 path설정 따로 해주셨나요?

    • 남성 2015.01.28 11:56 신고

      포스팅에 기록한 데로 cinst 통해서 설치하면 아래 주소에 프로그램들이 설치 됩니다. 아래 path 는 현재 시스템의 path 환경 변수에 설정되어 있습니다.

      C:\ProgramData\chocolatey\bin

      저는 다음과 같이 youtube-dl.EXE 이 설치 됐네요.

      C:\ProgramData\chocolatey\bin\youtube-dl.EXE

      보통 C:\Windows 는 path 환경 변수에 설정이 되어 있어서 해당 폴더의 하위에 넣으면 인식이 되는데 이상하네요.

      path 확인 해 보시길

오늘은 window command 라인 상에서의 MATLAB 실행 방법에 대해 소개하려 합니다.

 

보통의 MATLAB 의 실행은 아이콘을 더블 클릭해서 실행하곤 하는데 ~ 이 경우에는 MATLAB desktop 이 실행되다 보니 로딩이 좀 늦고 무거운 감이 있습니다.

 

물론 컴퓨터 성능에 따라 정도의 차이는 있지만요~

 

간단하게 계산기 용도로 쓸 때나 미리 작성한 script 등을 실행시키고 이의 결과를 얻으려고 할 때 등은 굳이 무거운 MATLAB desktop 을 실행 시킬 필요는 없습니다.

 

마치 window batch 파일을 실행 시키는 것처럼 MATLAB을 실행시키는 방법에 대해 알아보죠~

 


 

아래의 링크 페이지를 참조 하면 window command 라인에서의 MATLAB 실행 명령어 들에 대해 알 수 있습니다.

 

참조: MATLAB help

 

이중에서 저는 주로 –automation 옵션과 –r, -logfile 옵션 등을 주로 이용 합니다.

 

  • –automation 옵션은 MATLAB을 automation server 로 시작하도록 하며 최소화 된 상태로 시작하도록 합니다.

 

  • -r "statement" 옵션은 시작하자마자 MATLAB "statement" 를 실행하는 것입니다.

 

  • -logfile "filename" 옵션은 command 창의 결과들을 "filename" 이라는 파일에 기록하는 것입니다.

 

  • -wait 옵션은 MATLAB 실행이 끝날 때까지 window command 명령 입력을 못하도록 대기 시키는 것입니다.

 



 

window command 창에서 다음과 같이 명령을 하면

 

 

다음과 같은 command window 하나가 최소화된 형태로 딸랑 나옵니다.

 

 



 

다음으로 –r 옵션을 실험해 보죠. 다음과 같이 a=1, b=2, c= a+b 명령을 실행하게 해 보죠.

 

 

이렇게 해서 실행된 MATLAB command 는 위에 그냥 -automation 한 것과 차이가 없죠?

 

이건 명령에 세미콜론(;)을 붙여 줬기 때문에 command 창에 결과가 나타나지 않은 것뿐입니다.

 

아래와 같이 whos 명령을 통해 workspace 에 어떤 변수들이 있는지 확인 할 수 있습니다.

 

 



 

이제 마지막으로 –logfile 옵션을 알아보죠.

 

다음 그림의 command 창 명령어는 a=1, b=2, c=a+b를 계산하고 이 결과를 D:\result.txt 에 기록하는 예입니다.

 

 

command window 에는 다음과 같이 나오게 되고~

 

 

result.txt 파일에는 command window 창의 결과가 아래와 같이 저장되게 되는 것을 확인 할 수 있습니다.

 

 




 

이제 특정 스크립트들을 batch 파일의 형태로 실행 시켜 보도록 하죠~

 

다음과 같이 두 개의 script 를 실행시키는 matlab_batch.bat 이라는 batch 파일을 만들어 보죠.


% D:\script1.m

a=2
b=1:10
c=a*b

 
% D:\script2.m

a=2
b=1:10
c=a*b

 

% matlab_batch.bat

matlab -automation -r run('D:\script1.m'),quit -logfile D:\result1.txt -wait
matlab -automation -r run('D:\script2.m'),quit -logfile D:\result2.txt -wait


 

위 batch 파일을 실행 시키면 다음과 같이  result1.txt, result2.txt 라는 결과를 얻을 수가 있습니다.

 

 

 

주기적으로 실행 시켜야 되는 MATLAB script가 있다면 batch 파일을 만들어서 예약작업의 형태로 실행시킨다면 좀더 편리하게 작업할 수 있을 거라고 생각되네요~


'programming language > MATLAB' 카테고리의 다른 글

MATLAB figure ButtonDownFcn  (0) 2012.02.22
Simulink Algebraic Loop  (0) 2012.02.13
MATLAB dos 명령 사용하기  (0) 2011.12.21
MATLAB convolution  (0) 2011.11.20
Window command 에서 MATLAB 실행 방법  (0) 2011.11.20
MATLAB, end 를 이용한 데이터 추가  (1) 2011.11.18
MATLAB 집합 관련 함수들  (0) 2011.06.13
MATLAB plot tools  (0) 2011.05.26
MATLAB Graphic handle  (0) 2011.05.25

+ Recent posts