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

我正在许多不同的地方工作我的MATLAB代码,如果我能让代码知道它在计算机上的位置,这将非常有帮助。 我认为有一个函数可以提供给我这些信息,但是我不记得它是什么,或者在Google上find它。

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

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

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

mfilename或更好的mfilename('fullpath')

在处理类时,我经常喜欢在类目录中保存关联的数据。 我使用哪个获取path,然后使用fileparts将其切碎。

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

凡“对象”可以是一个function或类名称。 这个方法对我的优点是你可以从mfile文件之外调用它。 例如,如果您需要从基类获取派生类的path,则这是必需的。

另一种方法,通过使用dbstack函数的MATLAB答案网站上的Walter Roberson :

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

你应该能够使用mfilenamecd

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