解决错误:函数或变量无法识别
问题
一个经常遇到的错误消息表明 MATLAB® 找不到特定的程序文件或变量:
Unrecognized function or variable 'x'.(函数或变量 'x' 无法识别。)
许多情况可能导致此错误。本主题介绍如何识别和解决常见情况。
可能的解决方案
查找拼写错误
最常见的原因之一是函数或变量名称拼写错误。尤其对于较长的名称或包含相似字符(例如,字母 l 和数字 1)的名称,很容易出错而不易察觉。
通常,如果您拼错名称,命令行窗口中将显示一个建议的名称。例如,由于以下命令在函数名称中包含大写字母,因此该命令将会失败。
accumArray(1,10)
Unrecognized function or variable 'accumArray'. Did you mean: >> accumarray(1,10)
按 Enter 执行建议的命令,或按 Esc 取消该命令。
检查工作区中的变量
要检查您要使用的变量是否在当前工作区中可用,请使用 whos 命令。
如果未列出该变量,可能的原因如下:
在当前会话中尚未运行创建该变量的代码,或对
clear或clearvars命令的调用删除了该变量。如果您之前创建了该变量,通常可以在命令历史记录中找到代码,您可以通过使用向上箭头键从命令行访问该历史记录。如果您正在编辑脚本文件,代码可能尝试在使用该变量之前为其赋值。在编辑器中查看文件时,您可以点击变量名称以查找对该变量的所有引用并检查运算顺序。

如果变量在工作区中并且您正在编写抛出错误的函数,请检查您是否将变量作为输入参量传递给函数。函数不使用基础工作区,因此必须将变量显式传入函数工作区。例如,即使变量 c 存在于基础工作区中,以下函数也找不到它。
function y = myfunction(x) y = x + c; end
要解决此问题,请将 c 添加到函数定义行。
function y = myfunction(x,c) y = x + c; end
然后,在函数调用中包含该变量。
Y = myfunction(X,c);
有关工作区的详细信息,请参阅基础和函数工作区。
检查函数的可用性
如果未识别的项目是函数,而您对该函数不熟悉,请检查它是否包含在您安装的软件中。
首先,在最新 MathWorks 文档中搜索该函数。如果在文档中没有找到该函数,请检查其他资源,例如 MathWorks® File Exchange,以找到包含该函数的软件。
如果您在 MathWorks 文档中找到该函数:
运行文档中的示例代码,检查该函数是否可用。如果代码没有生成
Unrecognized function错误,请跳到检查函数输入继续诊断问题。检查该函数是否比您的软件版本更新。要确定函数是何时引入的,请查阅其参考页的“版本历史记录”部分。

要检查您的 MATLAB 版本,请使用
version命令。版本显示在括号中。version
ans = '24.1.0.2661297 (R2024a) Update 5'检查必需产品是否已安装。必需产品位于文档页的左窗格中。

要检查该产品是否已安装,请使用
ver命令。ver
. . . MATLAB Version 24.1 (R2024a) Deep Learning Toolbox Version 24.1 (R2024a) Statistics and Machine Learning Toolbox Version 24.1 (R2024a) Text Analytics Toolbox Version 24.1 (R2024a)
如果该产品未列出,则可能未安装。有关安装产品的信息,请参阅获取和管理附加功能。
如果您已安装该产品,但它未出现在
ver重新生成的列表中,请更新工具箱缓存。在主页选项卡的环境部分,点击
设置。选择 MATLAB > 常规,然后点击更新工具箱路径缓存。如果该产品仍未出现在
ver生成的列表中,请确保您有该工具箱的有效许可证。使用license命令显示当前有效的许可证,并访问许可证中心以查看相关联的产品。有关管理许可证的详细信息,请参阅管理您的许可证。
检查函数输入
当函数无法识别输入的形式时,使用现有变量调用可用函数可能会失败。请参阅函数文档以了解接受的语法和输入参量。您可以使用 doc 命令直接访问函数文档。
doc functionName
有两个常见问题可能难以识别:使用意外的索引表达式和省略对象输入。
意外的索引. 如果您在输入参量的位置键入冒号,MATLAB 会将代码解释为索引表达式而不是函数调用。例如,isnumeric 函数接受单精度输入数组,即 isnumeric(A)。在许多情况下,如果存在多个参量,isnumeric 会检测出来。
isnumeric(A,B)
Error using isnumeric Too many input arguments.
但是,如果使用冒号代替参量,MATLAB 会将 isnumeric 解释为未定义的变量而不是函数。
isnumeric(A,:)
Unrecognized function or variable 'isnumeric'.
省略对象输入. 对象方法通常使用 method(object,inputs) 形式的函数语法进行说明。如果您习惯于使用 object.method(inputs) 形式的圆点表示法调用方法,请确保在使用函数形式时包含对象作为第一个输入。
使您的函数可用
当您编写计划从命令行或另一个文件调用的函数时:
将该函数保存在与函数同名的文件中。如果函数和文件的名称不同,则文件名将覆盖函数名称。
例如,将名为
curveplot的函数保存在名为curveplot的文件中,扩展名为.m或.mlx。如果函数curveplot位于名为curveplotfunction.m的文件中,则对curveplot的调用将失败。确保该函数是文件中定义的第一个或唯一的函数,并且文件中不包含任何函数定义之外的代码。如果函数不符合这些条件,则它是局部函数,无法从该文件外部调用。有关详细信息,请参阅局部函数。
有关编写函数的详细信息,请参阅在文件中创建函数。