【问题标题】:hierarchy of functions in MatLabMatLab 中的函数层次结构
【发布时间】:2013-05-15 18:46:18
【问题描述】:

我一直在阅读别人的matlab 代码,但我不知道代码的结构。我的意思是我想知道函数的层次结构,哪个函数使用哪个函数。我正在阅读代码以弄清楚这一点,但这需要很多时间。

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

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

但这似乎没有帮助!

【问题讨论】:

    标签: matlab matlab-guide


    【解决方案1】:

    MATLAB profiler 将向您展示您的代码调用了哪些函数(以及更多引导信息),并允许您单击函数调用的层次结构。你可以调用profile on然后运行你的代码,然后调用profile offprofile viewer,或者你可以简单地调用profile viewer并在顶部的编辑框中输入一行代码来运行。

    【讨论】:

      【解决方案2】:

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

      File Exchange 上也有一些工具,比如fdep

      【讨论】:

        【解决方案3】:

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

        1) 只有 .m 文件中的第一个函数(通常必须与文件本身同名)在该文件之外可见。

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

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

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

        这就是基础。毫无疑问,还有其他规则,可能还有例外。但这种理解通常对我很有帮助。

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-11-12
            • 2013-01-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多