如何在MATLAB中生成函数依赖关系列表?

问题描述:

为了发布我写的函数,这个函数依赖于我编写的其他函数,它们有自己的依赖关系等等,而不分发我所写过的每个m文件,我需要弄清楚完整的列表依赖关系是针对给定的m文件的。是否有内置/免费下载的方式来做到这一点?如何在MATLAB中生成函数依赖关系列表?

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

对于(如2007年或2008年),你可以使用内置的功能Matlab的较新版本:

  1. mlint
  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'); 

给出了一个包含foo.m的所有依赖关系的结构deps。

从答案23,更新版本的MATLAB(2015a后)使用matlab.codetools.requiredFilesAndProducts来代替。

条回答

编辑:

注意事项感谢@Mike卡茨评论

  • 记住探查器将只 告诉你文件实际上在这些试验中使用 ,所以如果你不通过每个分支去 ,你可能有 额外的依赖关系。 相关性报告是一个很好的工具,但 仅解决了路径上的静态依赖关系,仅解决了单个目录中 文件的静态依赖关系。

  • Depfun更可靠,但它给你 它可以想到的每一件可能的事情, ,仍然会错过LOAD和EVAL的。

+2

请记住,事件探查器只会显示在这些运行中实际使用的文件,因此如果您没有浏览每个分支,则可能有其他依赖关系。依赖性报表是一个很好的工具,但只能解决路径上的静态依赖关系,并且仅用于单个目录中的文件。 – 2009-03-14 14:24:20

+3

Depfun更可靠,但可以为您提供它想到的所有可能的事情,并且仍然会错过LOAD和EVAL。 – 2009-03-14 14:25:19

对于MATLAB 2015a,以后你最好看看matlab.codetools.requiredFilesAndProducts

doc matlab.codetools.requiredFilesAndProducts

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

更新:对于MATLAB 2015b,depfun和depdir已被删除,因此您必须使用matlab.codetools.requiredFilesAndProducts()。