Main Content

确定程序依赖项

如果您需要知道您的程序所依赖的其他函数和脚本,请使用下面所述的一种方法。

简单显示程序文件依赖项

要简单显示特定函数引用的所有程序文件,请执行下列步骤:

  1. 键入 clear functions 以从内存中清除所有函数(请参阅下面的注释)。

    注意

    clear functions 不清除 mlock 锁定的函数。如果存在锁定函数(可使用 inmem 检查是否存在这种函数),请使用 munlock 取消解除对函数的锁定,然后重复步骤 1。

  2. 执行您要检查的函数。请注意,您在此步骤中选择使用的函数参数很重要,这是因为您在调用同一函数时使用了不同的参数会得到不同的结果。

  3. 键入 inmem 以显示在函数运行时使用的所有程序文件。如果您还想查看使用了哪些 MEX 文件,请另外指定一个输出:

    [mfiles, mexfiles] = inmem

详细显示程序文件依赖项

要详细显示依赖函数的信息,请使用 matlab.codetools.requiredFilesAndProducts 函数。除了程序文件之外,matlab.codetools.requiredFilesAndProducts 还显示特定函数依赖哪些 MathWorks® 产品。如果有一个函数 myFun,它调用 Image Processing Toolbox™ 中的 edge 函数:

[fList,pList] = matlab.codetools.requiredFilesAndProducts('myFun.m');
fList
fList = 

    'C:\work\myFun.m'

唯一必需的程序文件是函数文件本身,即 myFun

{pList.Name}'
ans = 

    'MATLAB'
    'Image Processing Toolbox'

文件 myFun.m 需要 MATLAB® 和 Image Processing Toolbox。

文件夹中的依赖项

依存关系报告显示文件夹中的 MATLAB 代码文件之间的依存关系。使用该报告可确定:

  • 同一文件夹中的哪些文件是其他文件所必需的

  • 一旦将某文件删除,当前文件夹中是否有任何文件失败

  • 当前文件夹中是否缺少任何调用的文件

该报告并不列出:

  • toolbox/matlab 文件夹中的文件,这是因为每个 MATLAB 用户都有这些文件。

    因此,如果您使用某个函数文件隐蔽了内置函数文件,MATLAB 会从列表中排除这两个文件。

  • 从匿名函数调用的文件。

  • 类文件的超类。

  • 通过 evalevalcrunload、函数句柄和回调中调用的文件。

    MATLAB 在运行时之前并不解析这些文件,因此依存关系报告无法发现它们。

  • 某些方法文件。

    依存关系报告查找您在 MATLAB 文件中调用的类构造函数。但是,对于该报告而言,您对生成对象执行的任何方法都是未知的。这些方法既可作为单独的方法文件,也可作为属于某个方法文件的超类的文件存在于 classdef 文件中。

要提供有意义的结果,依存关系报告要求满足以下条件:

  • 您运行报告时的搜索路径与您运行文件夹中的文件时相同。(即当前文件夹位于搜索路径的顶端。)

  • 您运行报告的文件夹中的文件不会改变搜索路径,否则会控制报告。

  • 文件夹中的文件并不加载变量,否则会产生致使不同程序元素同名的名称冲突。

注意

请勿使用依存关系报告来确定其他人运行特定文件需要哪些 MATLAB 代码文件。请改用 matlab.codetools.requiredFilesAndProducts 函数。

创建依存关系报告

  1. 使用当前文件夹窗格导航到准备生成依存关系报告的文件所在的文件夹。

    注意

    您不能在路径为 UNC(通用命名约定)路径时运行报告;即路径以 \\ 开头。应使用您系统上的实际硬盘驱动器,或映射的网络驱动器。

  2. 在当前文件夹窗格上,点击 ,然后选择报告 > 依存关系报告

    依存关系报告随即在 MATLAB Web 浏览器中打开。

  3. 如果需要,请选择该报告中的一个或多个选项,如下所示:

    • 要查看该文件夹(父级)中的每个文件调用的所有 MATLAB 代码文件(子级)的列表,请选择显示子函数

      该报告指示每个子函数所在的位置,例如在指定工具箱中。如果该报告指定子函数的位置是未知的,则可能是因为:

      • 子函数不在搜索路径上。

      • 子函数不在当前文件夹中。

      • 该文件已移动或删除。

    • 要列出调用每个 MATLAB 代码文件的文件,请选择显示父函数

      该报告将父(调用)函数限制为当前文件夹中的函数。

    • 要在报告中包括局部函数,请选择显示子函数。该报告在主函数后直接列出局部函数并以灰色高亮显示这些函数。

  4. 点击对当前文件夹运行报告

阅读和使用依存关系报告

下图显示了依存关系报告。它指明 chirpy.m 调用 Signal Processing Toolbox™ 中的两个文件以及 Image Processing Toolbox 中的一个文件。它还显示 go.m 调用 mobius.m,后者位于当前文件夹中。

依存关系报告包括以下内容:

  • MATLAB 文件列表

    该文件夹中已运行依存关系报告的文件列表。点击此列中的链接可在编辑器中打开相应的文件。

  • 子级

    MATLAB 文件调用的一个或多个函数。

    点击此列中的链接可打开列在同一行中的 MATLAB 文件,并转到对被调用函数的第一个引用。例如,假设您的依存关系报告如上一张图所示。点击 \images\images\erode.m 便会打开 chirpy.m 并将光标置于引用 erode 的第一行。换而言之,它不会打开 erode.m

  • 多个类方法

    因为该报告是一种静态分析,所以它无法确定运行时数据类型,因而无法确定文件所需的特定类方法。如果有多个类方法与引用的方法相匹配,则依存关系报告会在文件名旁边插入一个问号链接。下图中显示了该问号。

    点击问号链接可列出 MATLAB 可能使用的、具有指定名称的类方法。MATLAB 列出搜索路径上与指定的方法文件(本例中为 freqresp.m)匹配的几乎所有方法文件。如果列表包含您不熟悉的类方法和 MATLAB 内置函数,也不必担心。

    您无需确定 MATLAB 将使用哪个文件。MATLAB 根据程序在运行时调用的对象确定要使用的方法。