50 Stimmen

Ermitteln des Speicherorts der aktuellen m-Datei in MATLAB

Ich arbeite an meinem MATLAB Code an verschiedenen Stellen, und es wäre wirklich hilfreich, wenn ich dem Code mitteilen könnte, wo er sich auf dem Computer befindet. Ich glaube, es gibt eine Funktion, die mir genau diese Informationen liefert, aber ich weiß nicht mehr, wie sie heißt und kann sie auch nicht bei Google finden.

Die Idee ist, dass ich eine Funktion habe myFunc die eine Datei in ihrem eigenen Verzeichnis benötigt, das sich auf verschiedenen Computern an unterschiedlichen Stellen befinden kann. Also in myFunc Ich möchte etwas in dieser Art machen:

dir = theFunctionImLookingFor;
system(fullfile(dir, 'someApp.exe'));

(Es könnte auch sein, dass die Funktion, nach der ich suche, nicht das Verzeichnis, sondern das Verzeichnis + m-Dateiname zurückgibt, aber das macht für mich keinen Unterschied).

73voto

Mikhail Poda Punkte 5638

mfilename oder besser mfilename('fullpath')

20voto

Tom Makin Punkte 3135

Wenn ich mit Klassen arbeite, möchte ich die zugehörigen Daten oft im Klassenverzeichnis aufbewahren. Ich verwende die um den Pfad zu erhalten und dann Dateiteile um es zu zerhacken.

[folder, name, ext] = fileparts(which('object'));

Dabei kann "Objekt" ein Funktions- oder Klassenname sein. Der Vorteil dieser Methode besteht für mich darin, dass man sie von außerhalb der betreffenden mFile aufrufen kann. Das ist notwendig, wenn man zum Beispiel den Pfad zu einer abgeleiteten Klasse von der Basisklasse abrufen muss.

11voto

nibot Punkte 13820

Eine andere Methode, über Walter Roberson auf der MATLAB-Antwortseite unter Verwendung der dbstack Funktion:

S = dbstack('-completenames');
S(1).file

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X