Trouver l’emplacement du fichier m actuel dans MATLAB

Je travaille sur mon code MATLAB dans un certain nombre de lieux différents, et cela aiderait vraiment si je pouvais rendre le code conscient de son emplacement sur l’ordinateur. Je pense qu’il y a une fonction qui me donne exactement cette information, mais je ne me souviens pas de quoi elle s’appelle ou la trouve sur Google.

L’idée est que j’ai une fonction myFunc qui nécessite un fichier dans son propre répertoire, qui peut se trouver à différents endroits sur différents ordinateurs. Donc, dans myFunc je veux faire quelque chose comme ceci:

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

(Il se peut aussi 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 guère de différence pour moi.)

mfilename ou mieux mfilename('fullpath')

Lorsque je travaille avec des classes, j’aime souvent garder les données associées dans le répertoire des classes. J’utilise lequel pour obtenir le chemin, puis les fichiers pour le couper.

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

Où ‘object’ peut être une fonction ou un nom de classe. L’avantage de cette méthode est que vous pouvez l’appeler depuis l’extérieur du fichier en question. Cela est nécessaire si vous devez obtenir le chemin d’une classe dérivée de la classe de base par exemple.

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

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

Vous devriez pouvoir utiliser mfilename et cd pour cela.

mfilename renverra le nom du fichier m en cours d’exécution. cd par lui-même imprimera le répertoire en cours