MatLab中的函数层次结构

时间:2013-05-15 18:46:19

标签: matlab matlab-guide

我一直在阅读其他人的matlab代码,我不知道代码是如何构建的。我的意思是我想知道函数的层次结构,哪个函数使用哪个函数。我正在阅读代码来解决这个问题,但是花了很多时间。

那么有没有其他方法可以在不阅读整个内容的情况下看到这种层次结构?说实话,它开始变得混乱。也许MatLab有内置功能!我发现了这个:

How can I generate a list of function dependencies in MATLAB?

但这似乎没有帮助!

4 个答案:

答案 0 :(得分:3)

MATLAB profiler将显示代码调用的函数(以及更多启动信息),并允许您单击函数调用的层次结构。您可以致电profile on然后运行代码,然后拨打profile offprofile viewer,或者只需拨打profile viewer并输入一行代码即可在顶部的编辑框。

答案 1 :(得分:1)

使用MATLAB中提供的依赖关系报告: http://www.mathworks.co.uk/help/matlab/matlab_prog/identify-dependencies.html

文件交换中还有一些工具,例如fdep

答案 2 :(得分:0)

不知道显示可见或依赖函数的函数。但是基本规则是:

1)只有.m文件中的第一个函数(通常必须与文件本身具有相同的名称)才能在该文件外看到。

2)如果文件位于matlab路径中,任何函数都可以看到任何顶级(参见1.)函数。 Matlab可以向你展示路径,让你知道它在哪里狩猎。

3)路径的顺序很重要,将调用在路径中找到的名为foo的函数的第一个实例。显然,当前目录位于路径的顶部。

3)给定文件中的所有函数都可以看到该文件中的所有其他函数。

这是基础知识。毫无疑问,还有其他规则,也可能是例外情况。但这种理解通常对我有用。

显然,解决调用哪个函数的最简单方法是在编辑器中单击它并打开它。

答案 3 :(得分:0)

我做的一件事就是在开头fprintf("inside function <name>/n");和函数fprintf("leaving function <name>/n");的末尾放置每个函数,其中<name>是函数的名称。

这将为您提供一个非常具体的列表,列出哪个函数正在调用哪个函数(基于它们出现的顺序)。这样的另一件事就是放置fprintf("function <name1> calling function <name2>/n");,这样你就可以更清楚地知道哪个函数被哪个函数调用。