2016-07-18 11 views
0

Ich brauche eine Matlab-Funktion mit verschiedenen Eingabeargumenten in Linux-Shell zu nennen, schrieb ich meine Schleife in der folgenden Form und es funktioniert:Linux-Cluster-Shell für parallele Matlab-Simulation

set c=1 

while ($c <= 5) 

#JOB='qsub -m abe -N Big_run - << EOJ matlab -nodisplay -nodesktop << M_PROG test ($c); M_PROG EOJ` 

@ c = $c + 1 

end 

Es gibt zwei Probleme, ein ist "mismatched`. "

Die andere ist, wie Eingangsargument Matlab-Funktion übergeben?

+1

Wie ist es "funktioniert", wenn Sie diese 2 Probleme haben ... Sie meinen, Sie haben nur die Schleifenfunktion, aber nicht den Befehl? Noch wichtiger, welche Shell? –

Antwort

1

Für Ihr erstes Problem, verwenden Sie einfach eine passende Apostroph ' anstelle des Grab ticks `:

#JOB='qsub -m abe -N Big_run - << EOJ matlab -nodisplay -nodesktop << M_PROG test ($c); M_PROG EOJ' 

Für Ihr zweites Problem, führen Sie es so ...

matlab -nodisplay -nodesktop -r "yourFunction(42)" 

.. .wo 42 ist Ihr Eingabeargument.

Weitere Informationen hier: Unix commandline start: passing arguments to m file. Ein gutes Beispiel von nahem Ende:

matlab -nosplash -nodisplay -nojvm -nodesktop -r "input('A'),input('B'),input('C','s')" 
+0

Ich versuche, die folgende Zeile zu verwenden, um Matlab durch QSUB-Befehl aufzurufen, aber ich bekomme die "Mehrdeutige Eingabeumleitung." Fehler, Mit anderen Worten, wie kann ich Matlab direkt mit Hilfe von qsub Befehl ausführen? setzen JOB = 'qsub -m abe - << EOJ matlab -nodisplay -nodesktop << M_PROG 'Test ($ c), beenden' M_PROG EOJ' – Tom