2010-04-27 374 views
42

我正在使用我的MATLAB代码处理很多不同的位置,如果我能让代码知道它在计算机上的位置,它将非常有帮助。我认为有一个函数能够提供给我这些信息,但我不记得它是什么,或者在Google上找到它。在MATLAB中查找当前m文件的位置

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

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

(这也可能是我要找的功能不返回目录,但是目录+ m文件名,但使差别不大对我来说)

回答

59

mfilename或更好mfilename('fullpath')

+0

非常感谢米哈伊尔! – Jordi 2010-04-27 10:44:53

+3

这只会在运行完整文件时返回路径。它从命令窗口或运行单个单元格执行时会返回一个空字符串。 – ConfusinglyCuriousTheThird 2016-03-11 14:48:12

13

在处理类时,我经常希望将关联的数据保存在类目录中。我使用which获取路径,然后使用fileparts将其切断。

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

其中'对象'可以是函数或类名。这种方法对我的优点是你可以从有问题的mfile文件之外调用它。例如,如果您需要从基类获取派生类的路径,则这是必需的。

1

您应该可以使用mfilenamecd为此。

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

+0

优秀,非常简单而有效。只是一个CD命令:)) – HOPE 2017-06-13 06:00:48