为了分发我编写的依赖于其他函数的函数,而不必分发我曾经编写过的每个m文件,我需要找出给定m文件的全部依赖关系列表。是否有内置/可免费下载的方法来实现此目的?
具体来说,我对MATLAB 7.4.0 (R2007a)的解决方案感兴趣,但如果在旧版本中有不同的方法,请在这里添加。
具体来说,我对MATLAB 7.4.0 (R2007a)的解决方案感兴趣,但如果在旧版本中有不同的方法,请在这里添加。
对于较新的Matlab版本(例如2007或2008),您可以使用内置函数:
另一个选择是使用Matlab的分析器。命令是profile,它也可以用于跟踪依赖项。要使用profile,您可以执行以下操作:
>> 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的评论:
请记住,分析器只会显示那些运行中实际使用过的文件,因此如果您没有经过每个分支,可能会有其他依赖项。依赖性报告是一个很好的工具,但只解决路径上的静态依赖关系,并且仅适用于单个目录中的文件。
Depfun更可靠,但会给你列出它认为的每个可能需要的东西,并仍然会漏掉LOAD和EVAL。
对于 MATLAB 2015a 及更高版本
,您最好查看 matlab.codetools.requiredFilesAndProducts
或者使用 doc matlab.codetools.requiredFilesAndProducts
因为 depfun
标记为将在未来版本中删除。