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.)
mfilename ou mieux mfilename('fullpath')
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.
Une autre méthode, via Walter Roberson sur le site de réponses MATLAB , utilisant la fonction dbstack
:
S = dbstack('-completenames');
S(1).file