如何在MATLAB中生成函数依赖关系列表?
为了发布我写的函数,这个函数依赖于我编写的其他函数,它们有自己的依赖关系等等,而不分发我所写过的每个m文件,我需要弄清楚完整的列表依赖关系是针对给定的m文件的。是否有内置/免费下载的方式来做到这一点?如何在MATLAB中生成函数依赖关系列表?
具体而言,我对MATLAB 7.4.0(R2007a)的解决方案很感兴趣,但如果在老版本中有不同的方法,请务必在此处添加它们。
对于(如2007年或2008年),你可以使用内置的功能Matlab的较新版本:
- mlint
- 依赖报告和
- 覆盖报告
另一种选择是使用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):
- depfun
- depdir
例如,
>> deps = depfun('foo');
给出了一个包含foo.m的所有依赖关系的结构deps。
从答案2和3,更新版本的MATLAB(2015a后)使用matlab.codetools.requiredFilesAndProducts
来代替。
条回答
编辑:
注意事项感谢@Mike卡茨评论
记住探查器将只 告诉你文件实际上在这些试验中使用 ,所以如果你不通过每个分支去 ,你可能有 额外的依赖关系。 相关性报告是一个很好的工具,但 仅解决了路径上的静态依赖关系,仅解决了单个目录中 文件的静态依赖关系。
Depfun更可靠,但它给你 它可以想到的每一件可能的事情, ,仍然会错过LOAD和EVAL的。
对于MATLAB 2015a
,以后你最好看看matlab.codetools.requiredFilesAndProducts
或doc matlab.codetools.requiredFilesAndProducts
因为depfun
被标记在将来的版本中删除。
更新:对于MATLAB 2015b,depfun和depdir已被删除,因此您必须使用matlab.codetools.requiredFilesAndProducts()。
请记住,事件探查器只会显示在这些运行中实际使用的文件,因此如果您没有浏览每个分支,则可能有其他依赖关系。依赖性报表是一个很好的工具,但只能解决路径上的静态依赖关系,并且仅用于单个目录中的文件。 – 2009-03-14 14:24:20
Depfun更可靠,但可以为您提供它想到的所有可能的事情,并且仍然会错过LOAD和EVAL。 – 2009-03-14 14:25:19