2010-04-27 13 views
42

Je travaille sur mon code MATLAB dans un certain nombre d'endroits différents, et il serait vraiment utile si je pouvais faire connaître le code de son emplacement sur l'ordinateur. Je pense qu'il y a une fonction qui me donne exactement cette information, mais je ne peux pas me souvenir de ce qu'on appelle ou trouver sur Google.Trouver l'emplacement du fichier m actuel dans MATLAB

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 myFunc je veux faire quelque chose comme ceci:

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

(Il se pourrait aussi que la fonction que je cherche ne retourne pas le répertoire, mais le répertoire + nom m-fichier, mais qui fait peu de différence pour moi)

Répondre

59

mfilename ou mieux mfilename('fullpath')

+0

Merci beaucoup, Mikhail! – Jordi

+3

Cela retourne uniquement le chemin lors de l'exécution du fichier complet. Il renvoie une chaîne vide lorsqu'il est exécuté à partir de la fenêtre de commande ou lors de l'exécution d'une seule cellule. – ConfusinglyCuriousTheThird

13

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

[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 de l'extérieur du fichier en question. Ceci est nécessaire si vous avez besoin d'obtenir le chemin d'accès à une classe dérivée de la classe de base par exemple.

1

Vous devriez pouvoir utiliser nom de fichier et cd pour cela. Le nom de fichier renverra le nom du fichier m en cours d'exécution. cd par lui-même affichera le répertoire courant

+0

Excellent, très simple et efficace. Juste une commande de CD :)) – HOPE

Questions connexes