Wie wird das MATLAB-Skript über die Befehlszeile aufgerufen?

9

Ich habe versucht, Matlab von Terminal (ich habe einen Mac) aufzurufen und habe es einfach ein Programm für mich laufen lassen, ohne Display oder irgendetwas, nur das Programm. Dieses Programm zeigt Graphen an und schreibt eine Textdatei für mich. Ich habe einige der vorherigen Antworten zu dieser Frage gefunden, und so habe ich es versucht:

%Vor%

So ziemlich jedes Mal, wenn ich es versuche, bekomme ich immer die gleiche Antwort (wenn die Zeile einfach nicht dazu führt, dass die Aufforderung "Schraube dich" sagt und aufgibt): das eigentliche MATLAB-Programm Fenster wird geöffnet, und es bleibt offen. Es wird normal interagieren. Und die Befehlszeile wird nichts tun, bis ich das Fenster schließe. Das Programm, das ich möchte, läuft nicht. Das Fenster einfach ... sitzt da.

Wenn es hilft, habe ich matlab in meiner Bin codiert:

%Vor%

Ich habe keine Ahnung, was vor sich geht. Jede Hilfe würde sehr geschätzt werden.

    
Breaking Bioinformatics 17.10.2015, 13:23
quelle

4 Antworten

19

Ihr Skript bash zum Aufrufen von Matlab übergibt keine Argumente an die Matlab-Programmdatei. Wenn Sie

eingeben %Vor%

Was tatsächlich aufgerufen wird, ist

%Vor%

ohne die Argumente. Es gibt mehrere Möglichkeiten, dies zu beheben, während Sie einfach matlab aufrufen können. Alternativ könnten Sie den vollständigen Pfad zu matlab like

aufrufen %Vor%

Einrichten von matlab Executable

Bash-Skript

Da Sie bereits ein Skript bash zum Aufrufen von matlab geschrieben haben, ist es am einfachsten, es so zu ändern, dass es den $@ bash Platzhalter wie

enthält %Vor%

Das Platzhalterzeichen $@ übergibt alle von Ihnen verwendeten Parameter wie -nodesktop -nosplash -r "foo" an die ausführbare Datei matlab , was nun tatsächlich aufgerufen wird, ist

%Vor%

Ich empfehle Ihnen, das Skript matlab bash in /usr/local/bin zu platzieren und sicherzustellen, dass sich /usr/local/bin in PATH befindet. Das Verzeichnis /usr/local/ ist für von Benutzern installierte Skripts im Gegensatz zu systeminstallierten Skripts. Sie können überprüfen, welche Verzeichnisse in Ihrem PATH mit

sind %Vor%

und Sie sollten eine Ausgabe ähnlich der oben mit /usr/local/bin vorhanden sehen. Das Skript bash sollte ebenfalls ausführbar sein. Sie können dies mit

festlegen %Vor%

Hinweis : OS X El Capitan hat starke Einschränkungen für die Installation von Skripts über die neue Schutz der Systemintegrität .

Erstellen eines Symlinks zu matlab

Eine andere Methode, die der Erstellung des Skripts bash ähnelt, besteht darin, eine symbolische Verknüpfung zur ausführbaren Datei matlab zu erstellen. Dies sollte wieder in /usr/local/bin

platziert werden %Vor%

Auch für diese Methode müssen Sie sicherstellen, dass sich /usr/local/bin in Ihrem PATH befindet.

Hinzufügen von matlab zum PATH

Eine alternative Methode besteht darin, das Verzeichnis, in dem sich die ausführbare Datei matlab befindet, einfach zu Ihrer PATH hinzuzufügen. Sie können dies tun, indem Sie Ihre .bash_profile (oder .bashrc ) Datei ändern. Ihre .bash_profile -Datei befindet sich in Ihrem Home-Verzeichnis unter ~/.bash_profile . Es wird jedes Mal ausgeführt, wenn Ihr Benutzer das Terminal öffnet. Um matlab zum PATH hinzuzufügen, fügen Sie einfach

hinzu %Vor%

dazu. Jetzt können Sie matlab mit

aufrufen %Vor%

und dies wird die ausführbare matlab in /Applications/MATLAB_R2015b.app/bin/ lokalisieren und sie mit

aufrufen %Vor%

Nachdem Sie Ihre .bash_profile Datei geändert haben, müssen Sie sie mit

neu laden %Vor%

oder starten Sie das Terminal neu, damit die Änderungen wirksam werden.

Hinweis : Ich bevorzuge es, die Datei .bashrc anstelle von .bash_profile zu ändern, weil ich .bashrc auch unter Linux verwende. Ich habe meine .bash_profile Datei eingerichtet, um meine .bashrc Datei

zu laden %Vor%

Hinweis : Wenn Sie möchten, dass matlab für jeden Benutzer und nicht nur für Ihren Benutzer verfügbar ist, müssen Sie

hinzufügen %Vor%

für die systemweite Datei /etc/profile .

Erstellen eines Alias ​​für matlab

Die letzte Methode, die ich erwähnen werde, ist das Erstellen eines Alias ​​für matlab . Dies tun wir, indem wir unsere Datei .bash_profile (oder .bashrc ) erneut modifizieren und anfügen

%Vor%

dazu. Nachdem wir die Änderungen vorgenommen haben, müssen wir sie erneut mit

laden %Vor%

oder starten Sie das Terminal neu, damit die Änderungen wirksam werden. Und wenn matlab für jeden Benutzer und nicht nur für Ihren Benutzer verfügbar sein soll, müssen Sie die systemweite /etc/profile -Datei ändern.

Ausführen von matlab vom Terminal

Jetzt haben wir matlab eingerichtet, um bequem vom Terminal mit dem einfachen Befehl

auszuführen %Vor%

Wir können uns anschauen, wie wir Skripte ausführen. Um ein Matlab-Skript auszuführen, müssen wir uns zuerst in dem Verzeichnis befinden, in dem sich das Skript befindet, oder in unserem Matlab PATH . Ich gehe davon aus, dass es nicht in Ihrem Pfad ist und so werden wir cd auf das richtige Verzeichnis

%Vor%

Um nun matlab ohne den Desktop auszuführen, fordert MathWorks -nojvm -nodisplay -nosplash an, aber wenn wir -nojvm und / oder -nodisplay verwenden, können wir keine Graphen anzeigen. Also legen wir -nojvm ab und ersetzen -nodisplay durch -nodesktop und verwenden -nodesktop -nosplash . Dies wird Matlab ohne eine Anzeige starten und uns erlauben, Graphen anzuzeigen. Der korrekte Befehl, matlab ohne die vollständige Desktop-GUI auszuführen und gleichzeitig Grafiken anzuzeigen, ist

%Vor%

Jetzt können Sie das Terminal (Eingabeaufforderung) als Matlab-Befehlsfenster verwenden und Befehle normal ausführen. Zum Beispiel könnten wir foo

nennen %Vor%

Alternativ können wir die Option -r für die ausführbare Datei matlab verwenden, um Befehle zur Ausführung von Matlab zu übergeben. Diese müssen korrekt zitiert werden und eine gültige Matlab-Syntax haben . Unser Befehl, Matlab mit unseren vorherigen Optionen zu starten und das Skript foo.m auszuführen, wird zu

%Vor%

Beiseite : Wenn wir zum Beispiel

verwenden würden %Vor%

(beachte die Verwendung von exit; ), dies würde Matlab starten, foo.m ausführen, die Graphen anzeigen und dann Matlab beenden, um die Graphen zu schließen.

    
IKavanagh 20.10.2015, 08:11
quelle
2

Ich denke, das Bash-Skript ignoriert die Befehlszeilenargumente. Könnten Sie Folgendes versuchen?

%Vor%     
yuval 17.10.2015 23:19
quelle
0

Das sollte den Trick machen

%Vor%

genießen

    
eyalsoreq 18.10.2015 19:21
quelle
0

Du solltest es tun können

%Vor%

Mit anderen Worten: Verwenden Sie das Zeichen < , um in Linux umzuleiten.

    
alle_meije 20.10.2015 12:29
quelle

Tags und Links