2010-04-27 16 views
42

Estoy trabajando en mi código MATLAB en varias ubicaciones diferentes, y realmente sería útil si pudiera hacer que el código tuviese conocimiento de su ubicación en la computadora. Creo que hay una función que me proporciona exactamente esta información, pero no recuerdo cómo se llama ni la encuentro en Google.Buscar la ubicación de la m-file actual en MATLAB

La idea es que tengo una función myFunc que necesita un archivo en su propio directorio, que puede estar en diferentes ubicaciones en diferentes computadoras. Así que en myFunc que quiero hacer algo como esto:

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

(También podría ser que la función que estoy buscando no devuelve el directorio, pero el nombre del directorio + m-archivo, pero que hace poca diferencia para mí)

Respuesta

59

mfilename o mejor mfilename('fullpath')

+0

Muchas gracias, Mikhail! – Jordi

+3

Esto solo devuelve la ruta cuando se ejecuta el archivo completo. Devuelve una cadena vacía cuando se ejecuta desde la ventana de comandos o cuando se ejecuta una sola celda. – ConfusinglyCuriousTheThird

13

Cuando trabajo con clases, a menudo me gusta mantener los datos asociados en el directorio de la clase. Yo uso which para obtener la ruta y luego fileparts para cortarlo.

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

Donde 'object' puede ser una función o nombre de clase. La ventaja de este método para mí es que puedes llamarlo desde fuera del mfile en cuestión. Esto es necesario si necesita obtener la ruta a una clase derivada de la clase base, por ejemplo.

1

Debería poder usar mfilename y cd para esto.

mfilename devolverá el nombre de la m-file que se está ejecutando actualmente. cd por sí mismo imprimirá el directorio actual

+0

Excelente, muy simple y efectivo. Solo un comando de CD :)) – HOPE

Cuestiones relacionadas