Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find location of current m-file in MATLAB

Tags:

matlab

I'm working on my MATLAB code in a number of different locations, and it would really help if I could make the code aware of its location on the computer. I think there is a function that gives me exactly this information, but I can't remember what it is called or find it on Google.

The idea is that I have a function myFunc that needs a file in its own directory, which can be in different locations on different computers. So in myFunc I want to do something like this:

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

(It could also be that the function I'm looking for doesn't return the directory, but the directory + m-file name, but that makes little difference to me.)

like image 907
Jordi Avatar asked Apr 27 '10 09:04

Jordi


People also ask

How do I find the path of a function in MATLAB?

You can use -all with the input arguments of any of the previous syntaxes. str = which( item ) returns the full path for item to str . str = which( fun1 ,'in', fun2 ) returns the path to function fun1 that is called by file fun2 .

What is MATLAB M-file?

M-files are macros of MATLAB commands. The M-files are stored as ordinary text files with the extension m, filename. m. An M-file can be either a function with input and output variables or a list of commands.


2 Answers

mfilename or better mfilename('fullpath')

like image 125
Mikhail Poda Avatar answered Nov 07 '22 11:11

Mikhail Poda


When working with classes I often like to keep associated data in the class directory. I use which to get the path and then fileparts to chop it up.

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

Where 'object' can be a function or class name. The advantage of this method for me is that you can call it from outside the mfile in question. This is necessary if you need to get the path to a derived class from the base class for example.

like image 21
Tom Makin Avatar answered Nov 07 '22 09:11

Tom Makin