web-dev-qa-db-fra.com

Trouver l'emplacement du fichier m actuel dans MATLAB

Je travaille sur mon MATLAB code dans un certain nombre d'emplacements différents, et cela aiderait vraiment si je pouvais rendre le code conscient de son emplacement sur l'ordinateur . Je pense qu'il existe une fonction qui me donne exactement ces informations, mais je ne me souviens pas de leur nom ou je ne les trouve pas sur Google.

L'idée est que j'ai une fonction myFunc qui a besoin d'un fichier dans son propre répertoire, qui peut être à différents endroits sur différents ordinateurs. Donc dans myFunc je veux faire quelque chose comme ça:

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

(Il se peut également que la fonction que je recherche ne renvoie pas le répertoire, mais le répertoire + le nom du fichier m, mais cela ne fait pas beaucoup de différence pour moi.)

46
Jordi

mfilename ou mieux mfilename('fullpath')

67
Mikhail

Lorsque je travaille avec des classes, j'aime souvent conserver les données associées dans le répertoire des classes. J'utilise qui pour obtenir le chemin, puis fileparts pour le hacher.

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

Où "objet" peut être un nom de fonction ou de classe. L'avantage de cette méthode pour moi est que vous pouvez l'appeler depuis l'extérieur du fichier mf en question. Cela est nécessaire si vous devez obtenir le chemin d'accès à une classe dérivée de la classe de base par exemple.

19
Tom Makin

Une autre méthode, via Walter Roberson sur le site de réponses MATLAB , utilisant la fonction dbstack :

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