Main Content

解决错误:未定义的函数或变量

问题

当您在 MATLAB® 中使用函数或变量时,可能会遇到以下错误消息或类似的消息:

未定义函数或变量 'x'。

这些错误通常指示 MATLAB 在当前目录或搜索路径中找不到特定的变量或 MATLAB 程序文件。

可能的解决方案

验证函数或变量名称的拼写

最常见的原因之一是函数或变量名称拼写错误。尤其对于较长的名称或包含相似字符(例如,字母 l 和数字 1)的名称,很容易出错而不易察觉。

通常,如果您拼错 MATLAB 函数的名称,命令行窗口中将显示一个建议的函数名称。例如,由于以下命令在函数名称中包含大写字母,因此该命令将会失败。

accumArray
Undefined function or variable 'accumArray'.
 
Did you mean:
>> accumarray

此时,按 Enter 执行建议的命令,或按 Esc 取消该命令。

验证输入是否符合函数语法

通常使用函数语法调用对象方法:例如 method(object,inputs)。也可以使用圆点表示法来调用它们:例如 object.method(inputs)。一个常见的错误是混合使用这些语法。例如,您可能使用函数语法调用该方法,但却提供后跟圆点表示法语法的输入且未指定对象作为输入:例如 method(inputs)。为了避免这种情况,在调用对象方法时,请确保首先指定对象,或者通过函数语法的第一个输入,或者通过圆点表示法的第一个标识符。

确保函数名称与文件名匹配

当您编写函数时,需要在编写函数定义行时就确定函数名称。此名称应始终与用来保存该函数的文件的名称相匹配。例如,如果您创建一个名为 curveplot 的函数,

function curveplot(xVal, yVal)
     - program code -

则应将包含该函数的文件命名为 curveplot.m。如果您为该函数创建一个 pcode 文件,则将此文件命名为 curveplot.p。如果函数名称和文件名冲突,文件名将覆盖为函数指定的名称。在此示例中,如果您将 curveplot 函数保存到名为 curveplotfunction.m 的文件中,则尝试使用函数名称调用该函数将会失败:

curveplot
未定义函数或变量 'curveplot'。

如果您遇到此问题,请更改函数名称或文件名,使它们保持相同。

要找到定义此函数的文件,请使用 MATLAB 查找文件实用工具,如下所示:

  1. 主页选项卡上的文件部分中,点击 查找文件

  2. 查找具有以下名称的文件下,输入 *.m

  3. 查找包含以下文本的文件下,输入函数名称。

  4. 点击查找按钮

The find files interface

确保安装了必要的工具箱并且版本正确

如果您无法使用 MATLAB 或其工具箱中的内置函数,请确保安装了该函数且版本正确。

如果您不知道哪个工具箱包含所需的函数,请在 https://www.mathworks.com/help 中搜索函数文档。工具箱名称显示在函数参考页的顶部。或者,如需识别函数所依赖的工具箱的步骤,请参阅确定程序依赖项

当您知道函数所属的工具箱后,请使用 license 函数查看在运行 MATLAB 的系统上安装了哪些工具箱。license 函数会显示当前已安装的所有 MathWorks® 产品的列表。如果您可以在 license 显示的输出中找到所需的工具箱,则表明该工具箱已安装。如果找不到,您需要安装它才能使用。有关安装 MathWorks 产品的帮助,请参阅在许可证服务器上安装许可证管理器

验证用于访问函数工具箱的路径

提示

如果您有自定义文件路径,此步骤将删除它。

MATLAB 搜索路径是文件系统中所有文件夹的子集。MATLAB 使用搜索路径来高效地定位用于 MathWorks 产品的文件。有关详细信息,请参阅什么是 MATLAB 搜索路径?

如果您尝试使用的函数是工具箱的一部分,则使用 ver 验证该工具箱是否可用。

由于 MATLAB 将工具箱信息存储在缓存文件中,因此您需要先更新此缓存,然后再重置路径。

  1. 主页选项卡的环境部分,点击 预设项

    此时将显示“预设项”对话框。

  2. MATLAB > 常规页上,选择更新工具箱路径缓存

  3. 主页选项卡上的环境部分中,选择 设置路径

    此时将打开“设置路径”对话框。

  4. 选择默认

    此时将打开一个很小的对话框,警告您如果继续,将会丢失当前路径设置。如果您决定继续,请选择

运行 license 以查看工具箱是否已安装。如果未安装,则您可能需要重新安装此工具箱以使用该函数。有关安装工具箱的详细信息,请参阅 How do I install additional toolboxes into an existing installation of MATLAB

license 显示您的工具箱后,请运行以下命令以查看能否找到相应函数:

which -all <functionname>

<functionname> 替换为函数的名称。如果 MATLAB 找到您的函数文件,它会向您显示该文件的路径。您可以使用 addpath 函数将该文件添加到路径中。如果未找到,请确保安装了必要的工具箱并且版本正确。

确认许可证有效

如果您无法使用 MATLAB 工具箱中的内置函数,并且确认工具箱已安装,请确保您拥有该工具箱的有效许可证。使用 license 可显示当前有效许可证。有关管理许可证的其他支持,请参阅管理您的许可证