【问题标题】:How can I generate a list of function dependencies in MATLAB?如何在 MATLAB 中生成函数依赖项列表?
【发布时间】:2010-09-10 21:06:24
【问题描述】:

为了分发我编写的函数,该函数依赖于我编写的其他函数,这些函数具有自己的依赖关系等等,而不分发我编写过的每个 m 文件,我需要弄清楚完整列表是什么的依赖项是针对给定的 m 文件的。是否有内置/可免费下载的方式来执行此操作?

特别是我对 MATLAB 7.4.0 (R2007a) 的解决方案感兴趣,但如果在旧版本中有不同的方法,请务必在此处添加它们。

【问题讨论】:

    标签: function matlab dependencies code-analysis


    【解决方案1】:

    对于较新版本的 Matlab(例如 2007 或 2008),您可以使用内置函数:

    1. mint
    2. 依赖报告和
    3. 覆盖报告

    另一种选择是使用 Matlab 的分析器。该命令是配置文件,它也可以用于跟踪依赖关系。要使用个人资料,您可以这样做

    >> profile on   % turn profiling on
    >> foo;         % entry point to your matlab function or script
    >> profile off  % turn profiling off
    >> profview     % view the report
    

    如果分析器不可用,那么以下两个函数可能是(对于 MATLAB 2015a 之前的版本):

    1. depfun
    2. depdir

    例如,

    >> deps = depfun('foo');
    

    给出一个结构,deps,其中包含 foo.m 的所有依赖项。

    根据答案 23,较新版本的 MATLAB(2015a 之后)使用 matlab.codetools.requiredFilesAndProducts

    查看答案

    编辑:

    感谢@Mike Katz cmets 的警告

    • 请记住,Profiler 只会 向您展示实际使用的文件 在那些跑步中,所以如果你不去 通过每一个分支,你可能有 额外的依赖。这 依赖报告是一个很好的工具,但是 只解决静态依赖 路径,仅适用于 a 中的文件 单个目录。

    • Depfun 更可靠,但为您提供 它所能想到的一切, 仍然错过了 LOAD 和 EVAL。

    【讨论】:

    • 请记住,Profiler 只会向您显示在这些运行中实际使用的文件,因此如果您没有遍历每个分支,您可能会有额外的依赖项。依赖关系报告是一个很好的工具,但只解决路径上的静态依赖关系,并且只针对单个目录中的文件。
    • Depfun 更可靠,但它可以为您提供所有可能的东西,但仍然错过了 LOAD 和 EVAL。
    • 感谢@Mik Katz 的警告。
    • 尝试 exportToZip(链接:mathworks.com/matlabcentral/fileexchange/10702)。它是 2009 年 9 月 18 日的一周精选(链接:blogs.mathworks.com/pick/2009/09/18/…
    • 更新:在 MATLAB 2015b 中,depfun 和 depdir 已被删除(请参阅下面的答案)
    【解决方案2】:

    对于MATLAB 2015a 及更高版本,您最好查看matlab.codetools.requiredFilesAndProducts

    doc matlab.codetools.requiredFilesAndProducts

    因为depfun 被标记为在未来的版本中被删除。

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 2010-12-29
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多