2012-08-31 11 views
7

Właśnie przez wzgląd na konkretności, rozważmy następujący super prosty skrypt Pythona, w pliku o nazwie add_em:Jak: MATLAB skrypt, który można uzyskać argumenty z Unix wiersza polecenia

#!/usr/bin/env python 
# script name: add_em 

from sys import argv 

x = int(argv[1]) 
y = int(argv[2]) 
x_plus_y = x + y 
print '%d' % x_plus_y 

mogę teraz uruchomić ten skrypt, i przekazywać argumenty do niego, z linii poleceń Unix, tak:

% python add_em 3 8 
11 

Jeśli zrobię wykonywalny skrypt, ja nawet nie trzeba wspominać python w wierszu poleceń:

% chmod +x add_em 
% add_em 41 -29 
12 

Czy ktoś może mi pokazać jak pisać (i uruchomić) skrypt MATLAB tak, że wykonuje dokładnie tak jak powyżej skrypt robi? W szczególności musi być w stanie odczytać jego argumenty z wiersza poleceń Uniksa (w przeciwieństwie do "linii komend" GUI MATLABa) i wydrukować ich sumę liczbową na standardowe wyjście.

UWAGA: Ten skrypt nie trzeba być "stand-alone"; IOW, można założyć, że MATLAB jest zainstalowany lokalnie, a nawet można wspomnieć o matlab w linii poleceń (analogicznie do pierwszego powyższego formularza, w którym interpreter python jest jawnie wywoływany w wierszu poleceń).

Dzięki!

PS: Nie trzeba dodawać, że ten scenariusz jest antytezą "solidnego", ale moim celem było stworzenie łatwo przekazanego przykładu.

+0

Tutaj można znaleźć odpowiedź na swoje pytanie: http://stackoverflow.com/questions/3335505/how-can-i-pass-command-line- Argumenty-do-standalone-matlab-executable-running – piokuc

+0

*** Nie ***, to zadanie n oznacza * wolnostojący * (przeznaczony do uruchomienia bez zainstalowanej lokalnie kopii MATLAB). Właśnie dlatego podkreśliłem *** w moim pytaniu, że tego nie wymagam. W szczególności nie chcę *** kompilować skryptu MATLAB. – kjo

Odpowiedz

8

można mieć funkcja MATLAB robić to, co chcesz wewnątrz add_em.m

function add_em(x, y) 
x_plus_y = x + y; 
disp(x_plus_y); 
exit; 

a następnie wywołać go z linii poleceń Unix za pomocą przełącznika -r. Przykład:

matlab -nodesktop -nojvm -nosplash -r "add_em(3, 8)" 

W - opcje tłumić pulpitu, Java i splash więc skrypt/funkcja zostanie wykonana bez dodatkowego narzutu.

Można dodatkowo tłumią wiadomość MATLAB welcome/autorskich poprzez przekierowanie wyjścia do pliku dziennika (dla dowolnego obliczeń) lub ogonów, na przykład, wyjście w celu uzyskania czegoś drukowane na terminalu

matlab -nosplash -nodesktop -nojvm -r "add_em(3, 8)" | tail -n 3 

Aktualizacji: Właśnie dowiedziałem się tego posta/odpowiedzi z odpowiednimi informacjami: suppress start message of Matlab

+0

Dzięki za wspaniałą odpowiedź. Chciałbym móc głosować jeszcze bardziej. – kjo

+3

Czy możesz wyjaśnić coś na ten temat? W jaki sposób MATLAB wie, gdzie znaleźć plik .m definiujący tę funkcję? Czy musisz umieścić go w określonym miejscu, aby działał? –

Powiązane problemy