36

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

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

4

2 回答 2

36

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

  1. 林特
  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. 德普芬
  2. 目录

例如,

>> deps = depfun('foo');

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

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

查看答案

编辑:

感谢@Mike Katz 的评论

  • 请记住,Profiler 只会向您显示在这些运行中实际使用的文件,因此如果您不遍历每个分支,您可能会有额外的依赖项。依赖关系报告是一个很好的工具,但仅解决路径上的静态依赖关系,并且仅针对单个目录中的文件。

  • Depfun 更可靠,但它可以为您提供所有可能的东西,但仍然错过了 LOAD 和 EVAL。

于 2008-09-18T21:16:33.727 回答
7

For MATLAB 2015a and later you should preferably look at matlab.codetools.requiredFilesAndProducts

or doc matlab.codetools.requiredFilesAndProducts

because depfun is marked to be removed in a future release.

于 2015-03-14T14:15:58.530 回答