50 votes

Trouver l'emplacement du fichier m actuel dans MATLAB

Je travaille sur mon MATLAB dans un certain nombre d'emplacements différents, et cela m'aiderait vraiment si je pouvais faire en sorte que le code soit conscient de son emplacement sur l'ordinateur. Je pense qu'il existe une fonction qui me donne exactement cette information, mais je n'arrive pas à me souvenir de son nom ni à la trouver 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 se trouver à différents endroits sur différents ordinateurs. Ainsi, en myFunc Je veux faire quelque chose comme ça :

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 m-fichier, mais cela ne fait guère de différence pour moi).

73voto

Mikhail Points 3393

mfilename ou mieux mfilename('fullpath')

20voto

shakinfree Points 548

Lorsque je travaille avec des classes, j'aime souvent conserver les données associées dans le répertoire de la classe. J'utilise dont pour obtenir le chemin et ensuite parties de fichier pour le découper.

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

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

11voto

nibot Points 5057

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X