我正在许多不同的位置处理我的MATLAB代码,如果我能让代码知道它在计算机上的位置,那将会非常有用.我认为有一个函数能够准确地提供这些信息,但我记不起它的名称或在Google上找到它.
我的想法是,我有一个函数myFunc需要一个文件在自己的目录中,该文件可以位于不同计算机上的不同位置.所以在myFunc我想要做这样的事情:
dir = theFunctionImLookingFor;
system(fullfile(dir, 'someApp.exe'));
Run Code Online (Sandbox Code Playgroud)
(也可能是我正在寻找的函数不返回目录,而是目录+ m文件名,但这对我来说没什么区别.)
Tom*_*kin 19
使用类时,我经常喜欢在类目录中保留关联的数据.我使用哪个来获取路径,然后使用fileparts将其删除.
[folder, name, ext] = fileparts(which('object'));
Run Code Online (Sandbox Code Playgroud)
'object'可以是函数或类名.这种方法对我的好处是你可以从有问题的mfile外面调用它.如果您需要从基类获取派生类的路径,这是必要的.
nib*_*bot 10
另一种方法,通过Walter Roberson在MATLAB的答案网站上,使用以下dbstack功能:
S = dbstack('-completenames');
S(1).file
Run Code Online (Sandbox Code Playgroud)