在MATLAB中查找当前m文件的位置

时间:2010-04-27 09:46:33

标签: matlab

我正在许多不同的地方处理我的MATLAB代码,如果我能让代码知道它在计算机上的位置,那将会非常有用。我认为有一个功能可以准确地提供这些信息,但我不记得它的名称或在Google上找到它。

我的想法是我有一个函数myFunc需要一个文件在自己的目录中,该文件可以位于不同计算机上的不同位置。所以在myFunc我想做这样的事情:

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

(也可能是我正在寻找的功能不会返回目录,而是目录+ m文件名,但这对我来说没什么区别。)

4 个答案:

答案 0 :(得分:64)

mfilename或更好mfilename('fullpath')

答案 1 :(得分:16)

使用类时,我经常喜欢在类目录中保留关联的数据。我使用which获取路径,然后fileparts将其删除。

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

'object'可以是函数或类名。这种方法对我的好处是你可以从有问题的mfile外面调用它。如果您需要从基类获取派生类的路径,那么这是必要的。

答案 2 :(得分:10)

另一种方法,通过Walter Roberson on the MATLAB answers site,使用dbstack函数:

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

答案 3 :(得分:1)

您应该能够使用 mfilename cd

mfilename 将返回当前正在执行的m文件的名称。 cd 本身将打印当前目录