Ich arbeite an meinem MATLAB-Code an verschiedenen Stellen, und es wäre sehr hilfreich, wenn ich den Code auf seinen Standort auf dem Computer aufmerksam machen könnte. Bis jetzt habe ich mit .m-Dateien gearbeitet. Für .m-Dateien fand ich die folgenden Lösungen:Speicherort des aktuellen Skripts (mlx-Datei) in MATLAB
%example 1
cd(fileparts(mfilename('fullpath')))
oder
%example 2
tmp = matlab.desktop.editor.getActive;
cd(fileparts(tmp.Filename));
oder
%example 3
S = dbstack('-completenames');
S(1).file
oder
%example 4
which(mfilename)
Aber mit MATLAB 2016a ein neuer kommt Feature namens Live-Skript. Und damit funktionieren diese Lösungen nicht mehr.
%For example I would like to do something like this
cd(MLX_FILELOCATION);
%or
which(mlxfilename)
(bearbeiten III: Problem: Ich bin nicht in der Lage den Pfad/filelocation oder die Namen der aktuellen geöffnet/ausgeführt MATLAB-Datei zu erhalten mit * .m-Dateien dies möglich ist, mit den obigen Beispielen. Mit * .mlx-Dateien ist das nicht mehr möglich und ich bevorzuge * .mlx-Dateien anstelle von * .m-Dateien.)
Ausgaben der obigen Beispiele in einer * .mlx-Datei ausgeführt:
%example1: mfilename returns the path to the 'MatlabEvaluationHelper' in the 'AppData\Local\Temp'-folder
%example2: output is an empty array
%example3: same output as example1
%example4: same output as example1, because mfilename returns "MatlabEvaluationHelper"
Edit I: Mein erstes Ziel ist, dass ich den "aktuellen Ordner" (-> "cd") in den Pfad des laufenden Skripts ändern möchte. Warum: Im selben Ordner mit der mlx-Datei habe ich zum Beispiel .csv-Dateien mit Daten. Und zum Beispiel bis morgen habe ich einen neuen Ordner. Ich kopiere die mlx_file und nun möchte ich sicherstellen, dass ich nicht die csv-Dateien von gestern benutze (weil der aktuelle Ordner von gestern im Dateibrowser von MATLAB angezeigt wird) -> also würde ich gerne den "aktuellen" ändern Ordner "automatisch mit nur Kopieren der mlx-Datei in einen neuen Ordner.
Wenn es eine bessere Praxis dafür gibt, lass es mich wissen.
Vielen Dank für
bearbeiten II helfen: Beispiel für einen gebrauchten Workflow: programmiert ich ein Skript MATLAB. Gespeichert im Ordner "Dataset_ONE". Ansonsten kopiere ich "Dataset_ONE.csv" -Datei in den gleichen Ordner. Z.B. Ich erstelle nun ein Plot und speichere es als "* .png" im Ordner "Dataset_ONE". Am Tag danach könnte ich eine zweite (eine neue und mit dieser anderen) Datenmenge "Datasset_TWO" haben. Ich erstelle einen neuen Ordner "Dataset_TWO". Kopiere die MATLAB-Dateien in den neuen Ordner. Öffnen Sie die MATLAB-Datei dort. Aufgrund der Standardeinstellungen hat MATLAB den "Aktuellen Ordner" in den neuen Ordner geändert, in dem ich MATLAB geöffnet habe. Aber wenn ich jetzt das MATLAB-Skript im ersten Ordner wieder öffne (gleichzeitig mit dem anderen MATLAB-Skript), muss ich auf den aktuellen Ordner achten. In diesem Fall könnte es nützlich sein, die beschriebene Lösung zu haben.
KLJ mir ist nicht sehr klar, was Sie noch tun wollen. Klingt, als würdest du nur versuchen, dem Matlab-Pfad eine Reihe von Ordnern hinzuzufügen, um sie jederzeit zugänglich zu machen, was sehr einfach ist ... –
@ tasos-papastylianou: Siehe "Edit I" oben. Danke für die Frage. – KLJ
es hängt wirklich davon ab, wie Sie Matlab starten, was in Ihren Startupscripts usw. ... schreiben Sie bitte ein Beispiel, wie Ihr gewünschter Workflow wäre, einschließlich wie und wo Sie Matlab starten, wie Ihre Ordnerstruktur im Allgemeinen in Bezug auf ist alle relevanten Dateien sind involviert, das Ausgangsverzeichnis, in dem Matlab Sie findet, ist, wo Sie es haben möchten und wozu Sie Zugang haben möchten (und wozu Sie * keinen * Zugang haben möchten) . –