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

Jor*_*rdi 47 matlab

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

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

dir = theFunctionImLookingFor;
system(fullfile(dir, 'someApp.exe'));
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*ail 70

mfilename或更好mfilename('fullpath')

  • 这仅在运行完整文件时返回路径.从命令窗口执行或运行单个单元格时,它返回空字符串. (5认同)

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)