为了分发我编写的一个函数,该函数依赖于我编写的其他函数,这些函数有自己的依赖项等等,而不分发我曾经编写过的每个 m 文件,我需要弄清楚依赖项的完整列表是什么对于给定的 m 文件。是否有内置/可免费下载的方式来执行此操作?
具体来说,我对 MATLAB 7.4.0 (R2007a) 的解决方案感兴趣,但如果在旧版本中有不同的方法,请务必在此处添加它们。
为了分发我编写的一个函数,该函数依赖于我编写的其他函数,这些函数有自己的依赖项等等,而不分发我曾经编写过的每个 m 文件,我需要弄清楚依赖项的完整列表是什么对于给定的 m 文件。是否有内置/可免费下载的方式来执行此操作?
具体来说,我对 MATLAB 7.4.0 (R2007a) 的解决方案感兴趣,但如果在旧版本中有不同的方法,请务必在此处添加它们。
对于较新版本的 Matlab(例如 2007 或 2008),您可以使用内置函数:
另一种选择是使用 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 之前的版本):
例如,
>> deps = depfun('foo');
给出一个结构,deps,它包含 foo.m 的所有依赖项。
从答案2和3开始,使用较新版本的 MATLAB(2015a 之后)matlab.codetools.requiredFilesAndProducts
。
查看答案
编辑:
感谢@Mike Katz 的评论
请记住,Profiler 只会向您显示在这些运行中实际使用的文件,因此如果您不遍历每个分支,您可能会有额外的依赖项。依赖关系报告是一个很好的工具,但仅解决路径上的静态依赖关系,并且仅针对单个目录中的文件。
Depfun 更可靠,但它可以为您提供所有可能的东西,但仍然错过了 LOAD 和 EVAL。
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.