【问题标题】:Find location of current m-file in MATLAB在 MATLAB 中查找当前 m 文件的位置
【发布时间】:2011-02-12 18:58:42
【问题描述】:

我正在多个不同的位置处理我的MATLAB 代码,如果我能让代码知道它在计算机上的位置,那将非常有帮助。我认为有一个函数可以准确地为我提供这些信息,但我不记得它叫什么或在 Google 上找到它。

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

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

(也有可能是我要找的函数返回的不是目录,而是目录+m文件名,不过这对我来说差别不大。)

【问题讨论】:

    标签: matlab


    【解决方案1】:

    在处理类时,我经常喜欢将相关数据保存在类目录中。我使用which 获取路径,然后使用fileparts 将其切碎。

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

    其中“对象”可以是函数名或类名。这种方法对我来说的优点是您可以从相关的 mfile 外部调用它。例如,如果您需要从基类获取派生类的路径,这是必要的。

    【讨论】:

      【解决方案2】:

      另一种方法,通过Walter Roberson on the MATLAB answers site,使用dbstack 函数:

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

      【讨论】:

        【解决方案3】:

        mfilename 或更好的mfilename('fullpath')

        【讨论】:

        • 这仅在运行完整文件时返回路径。从命令窗口执行或运行单个单元格时,它返回一个空字符串。
        猜你喜欢
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多