我正在许多不同的地方处理我的MATLAB代码,如果我能让代码知道它在计算机上的位置,那将会非常有用。我认为有一个功能可以准确地提供这些信息,但我不记得它的名称或在Google上找到它。
我的想法是我有一个函数myFunc
需要一个文件在自己的目录中,该文件可以位于不同计算机上的不同位置。所以在myFunc
我想做这样的事情:
dir = theFunctionImLookingFor;
system(fullfile(dir, 'someApp.exe'));
(也可能是我正在寻找的功能不会返回目录,而是目录+ m文件名,但这对我来说没什么区别。)
答案 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 本身将打印当前目录