当前位置: 首页 > news >正文

MATLAB | 函数或变量无法识别 / 函数缺失

注:本文为 “MATLAB | 函数缺失” 相关合辑。
英文引文,机翻未校。
中文引文,略作重排。
图片清晰度受引文原图所限。
未整理去重,如有内容异常,请看原文。


Fix MATLAB Undefined Function Errors

修复 MATLAB 未定义函数错误

Olivia Parker
奥利维亚·帕克

When encountering an error of undefined function or variable in MATLAB, there are usually several ways to resolve it.
当在 MATLAB 中遇到未定义函数或变量的错误时,通常有几种解决方法。

  1. Check for spelling errors: First, check for any spelling errors in the code, such as incorrect capitalization or improper abbreviations that may have caused undefined functions or variables.
    检查拼写错误:首先,检查代码中是否存在拼写错误,例如大小写错误或不当缩写,这些都可能导致函数或变量未定义。
  2. Import the missing functions: If a function is used but not defined, it may be because the function has not been imported correctly. You can use the addpath command to add the directory where the function is located, or simply use the import command to import the function.
    导入缺失的函数:如果使用了某个函数但未对其定义,可能是因为该函数未正确导入。您可以使用 addpath 命令添加函数所在的目录,或者直接使用 import 命令导入该函数。
  3. Define the missing variable: If the error is caused by an undefined variable, try defining the variable in the code and assigning it an appropriate value.
    定义缺失的变量:如果错误是由未定义的变量导致的,可尝试在代码中定义该变量并为其赋予合适的值。
  4. Check for missing toolboxes: Sometimes undefined functions may belong to a specific MATLAB toolbox, so the corresponding toolbox needs to be installed to use them.
    检查是否缺失工具箱:有时未定义的函数可能属于特定的 MATLAB 工具箱,因此需要安装相应的工具箱才能使用。
  5. Update the MATLAB version: Upgrading to the latest version can resolve issues where certain functions are undefined in older versions of MATLAB.
    更新 MATLAB 版本:升级到最新版本可以解决旧版 MATLAB 中某些函数未定义的问题。
  6. Check the code structure: Errors like undefined functions or variables may sometimes occur due to issues in the code structure, such as incorrect positions of function calls. It is important to verify the accuracy of the code logic.
    检查代码结构:有时由于代码结构存在问题(例如函数调用位置错误),可能会出现未定义函数或变量等错误。验证代码逻辑的准确性十分重要。

By using the above methods, errors related to undefined functions or variables in MATLAB can typically be resolved. If the issue persists, consider searching for relevant documentation or seeking help from the MATLAB forum.
通过上述方法,通常可以解决 MATLAB 中与未定义函数或变量相关的错误。如果问题仍未解决,可考虑查阅相关文档或向 MATLAB 论坛寻求帮助。


解决错误:函数或变量无法识别

问题

一个经常遇到的错误消息表明 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 命令。

如果未列出该变量,可能的原因如下:

  • 在当前会话中尚未运行创建该变量的代码,或对 clearclearvars 命令的调用删除了该变量。如果您之前创建了该变量,通常可以在命令历史记录中找到代码,您可以通过使用向上箭头键从命令行访问该历史记录。

  • 如果您正在编辑脚本文件,代码可能尝试在使用该变量之前为其赋值。在编辑器中查看文件时,您可以点击变量名称以查找对该变量的所有引用并检查运算顺序。

在这里插入图片描述

如果变量在工作区中并且您正在编写抛出错误的函数,请检查您是否将变量作为输入参量传递给函数。函数不使用基础工作区,因此必须将变量显式传入函数工作区。例如,即使变量 c 存在于基础工作区中,以下函数也找不到它。

function y = myfunction(x)y = x + c;
end

要解决此问题,请将 c 添加到函数定义行。

function y = myfunction(x,c)y = x + c;
end

然后,在函数调用中包含该变量。

Y = myfunction(X,c);

有关工作区的详细信息,请参阅基础和函数工作区_。

  • 基础和函数工作区 - MATLAB & Simulink
    https://www.mathworks.com/help/matlab/matlab_prog/base-and-function-workspaces.html
检查函数的可用性

如果未识别的项目是函数,而您对该函数不熟悉,请检查它是否包含在您安装的软件中。

首先,在最新 MathWorks 文档 中搜索该函数。如果在文档中没有找到该函数,请检查其他资源,例如 MathWorks® File Exchange_,以找到包含该函数的软件。

  • File Exchange - MATLAB Central
    https://www.mathworks.com/matlabcentral/fileexchange/

如果您在 MathWorks 文档中找到该函数:

  1. 运行文档中的示例代码,检查该函数是否可用。如果代码没有生成 Unrecognized function 错误,请跳到检查函数输入_ 继续诊断问题。
  • 解决错误:函数或变量无法识别 - MATLAB & Simulink
    https://www.mathworks.com/help/matlab/matlab_prog/resolve-error-undefined-function-or-variable.html#mw_4aef0434-baa1-475c-b200-c4c2e615e789
  1. 检查该函数是否比您的软件版本更新。要确定函数是何时引入的,请查阅其参考页的“版本历史记录”部分。

    在这里插入图片描述

    要检查您的 MATLAB 版本,请使用 version 命令。版本显示在括号中。

    version
    
    ans ='24.1.0.2661297 (R2024a) Update 5'
    
  2. 检查必需产品是否已安装。必需产品位于文档页的左窗格中。

    在这里插入图片描述

    要检查该产品是否已安装,请使用 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)
    

    如果该产品未列出,则可能未安装。有关安装产品的信息,请参阅获取和管理附加功能_。

    • 获取和管理附加功能 - MATLAB & Simulink
      https://www.mathworks.com/help/matlab/matlab_env/get-add-ons.html
  3. 如果您已安装该产品,但它未出现在 ver 重新生成的列表中,请更新工具箱缓存。在主页选项卡的环境部分,点击 设置。选择 MATLAB > 常规,然后点击更新工具箱路径缓存

  4. 如果该产品仍未出现在 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 的调用将失败。

  • 确保该函数是文件中定义的第一个或唯一的函数,并且文件中不包含任何函数定义之外的代码。如果函数不符合这些条件,则它是局部函数,无法从该文件外部调用。有关详细信息,请参阅局部函数_。

    • 局部函数 - MATLAB & Simulink
      https://www.mathworks.com/help/matlab/matlab_prog/local-functions.html

有关编写函数的详细信息,请参阅在文件中创建函数_。

  • 在文件中创建函数 - MATLAB & Simulink
    https://www.mathworks.com/help/matlab/matlab_prog/create-functions-in-files.html

解决运行 MATLAB 出现 Error: Missing variable or function. 的总结

会飞的 PIG 标 发布 2018-11-18 16:52:18

本文针对 MATLAB 初学者遇到的 Error: Missing variable or function. 总结了 3 类常见原因(变量/函数缺失、文件名不合规、标点符号环境错误)及对应解决策略。

错误定位方法

该错误运行时不会提示具体位置,可通过以下方式定位:
将 m 文件中的代码逐句或逐段复制,直接粘贴到 Command Window 中运行,通过分段执行结果快速锁定错误所在行。

错误原因及解决策略

变量或函数缺失

  • 原因:多发生在复制他人代码时,代码中引用的变量未定义、函数未声明或未引入。
  • 解决:检查代码中所有变量的定义语句(如 a = 1;),确认函数是否已创建或通过 addpath 导入路径。

m 文件名不合规

  • 原因:m 文件命名存在限制,不能以数字开头,仅支持字母(大小写均可)开头;该问题在低版本 MATLAB(如 MATLAB 7.0)或破解版软件中更易出现。
  • 解决:修改 m 文件名,确保首字符为字母,例如将“1_test.m”改为“test1.m”。

标点符号使用中文环境

  • 原因:MATLAB 仅识别英文标点,若输入时使用中文环境下的标点(如分号、逗号),会触发报错。
  • 解决:将所有标点符号切换为英文环境输入,示例如下:
% 在 Command Window 生成简单的矩阵
m = [1 23 5] 	% 错误:分号“;”为中文环境,运行会报错
m = [1 2; 3 5]	% 正确:分号“;”为英文环境,可成功生成矩阵

MATLAB 自带函数缺失问题的解决

baical 原创 于 2019-05-26 23:45:38 发布

近期需使用 MATLAB 自带的 heatmap 函数进行绘图,将可在实验室电脑运行的代码移植到个人电脑后,显示无法找到 heatmap 函数。查阅 MATLAB 帮助文档后发现,heatmap 函数仅在 2017a 及之后版本中存在,而个人安装的版本为 2016a。考虑到重新安装的工作量较大,遂在论坛中寻找解决方案,发现如下解决自带函数缺失问题的方法:

方法一

确定函数所属的工具箱并进行安装。但笔者未能找到 heatmap 函数所属的工具箱。

方法二

  1. 在命令行中调用 type 函数,在 type 函数后输入待查询的函数名,即可获取该函数的原始代码。
  2. 将原始代码复制到自身代码中作为子函数调用;或新建一个.m 文件,将该函数作为自定义函数保存至 MATLAB 在“我的文档”中自动生成的 MATLAB 文件夹内,后续即可像调用自带函数一样使用该函数。

已安装 MATLAB 缺少函数包的解决方法

爱学习、、同同 原创于 2022-11-30 22:53:27 发布

在进行自控原理实验时,需使用 step(a, b) 函数。运行过程中发现无法完成绘图操作,报错信息如下:

img

使用 help 指令查询其用法后,发现当前系统中的 step 函数并非实验所需的函数,具体如下列图示。

img

经资料查询可知,实验所需函数缺失的原因是缺少函数包 Control System Toolbox,需进行补充下载。

  • File Exchange - MATLAB Central
    https://www.mathworks.com/matlabcentral/fileexchange

由于 MATLAB 体积较大,为节省资源,多数用户会选择仅下载常用功能。

以下为补充下载函数包的方法:

方法 一

通过主页的附加功能,添加企业邮箱完成注册,以正规途径获取正版函数包,此过程可能需要付费,学生群体通常难以采用。

方法 二

由于多数用户使用的是盗版软件,可通过下载时的压缩包(笔者使用的版本为 R2021b),借助百度网盘重新下载。

img

随后按照初始安装步骤操作,流程步骤如下列图示。

img

仅在选择产品时,添加所需的函数包(本次所需为 Control System Toolbox),选中后点击下一步。

安装完成后,可省略后续激活步骤,直接打开 MATLAB,使用 help 指令查询 step 函数,即可显示所需函数。

img

同理,若后续出现类似函数缺失问题,均可采用上述方法补充下载。


via:

  • Fix MATLAB Undefined Function Errors - Blog - Silicon Cloud
    https://www.silicloud.com/blog/how-to-resolve-undefined-functions-or-variables-in-matlab/

  • 解决错误:函数或变量无法识别 - MATLAB & Simulink
    https://ww2.mathworks.cn/help/matlab/matlab_prog/resolve-error-undefined-function-or-variable.html

  • MATLAB 自带函数缺失问题的解决_MATLAB 自带函数不全 - CSDN 博客 2019
    https://blog.csdn.net/baical/article/details/90582758

  • 已下好 MATLAB 缺少函数包怎么办?_MATLAB 缺少工具包怎么办 - CSDN 博客 2022
    https://blog.csdn.net/m0_70105828/article/details/128123717

  • 解决运行 matlab 出现Error: Missing variable or function. 的总结-CSDN 博客 2018
    https://blog.csdn.net/baidu_40722009/article/details/84201953

http://www.dtcms.com/a/513181.html

相关文章:

  • 做网站用笔记本电脑wordpress 大内存
  • qq刷赞网站怎么做的网页策划案
  • 邯郸做网站多少钱企业网站的建立联系方式
  • 汕头网站建设培训公司免费微信网站制作
  • 新建网站推广给企业海口网站建设哪个好薇
  • jmeter测试dubbo接口
  • AI体测设备哪家好供应商
  • 网上做预算的网站宿州集团网站建设
  • 微信网站怎么做的好处站长统计性宝app
  • 网商网站怎么做合肥建站网站模板
  • 从零开始学阿里云服务器安全管理:防攻击、防泄漏、防漏洞
  • Berachain 推出原生借贷板块 BEND,为 PoL 生态进一步注入资金循环能力
  • 深圳罗湖外贸网站建设怎么做网站网站
  • 4.5.更新数据
  • 网站新闻更新怎么设计wordpress标题调用标签
  • HPjtune.jar 使用教程(附下载与调优步骤)​
  • 松江网站建设培训费用视频制作软件哪个好用
  • QCResUNet:体素级与受试者级联合的分割质量预测|文献速递-文献分享
  • 020网站建设合同范本邢台公司网站建设
  • 软考 系统架构设计师系列知识点之杂项集萃(177)
  • 做网站如何通过流量赚钱重庆建个网站需要多少钱?
  • AI进化论 —— LeNet 论文学习
  • 银河麒麟Kylin申威SW64系统安装 rpcbind-1.2.5-2.p01.ky10.sw_64.rpm 方法
  • 太原做网站排名几十张照片合成视频
  • 徐州企业建站模板房天下搜房网官网
  • 华为OD机试C卷 - 会议室占用时间段 - 区间合并 - (Java C++ JavaScript Python)
  • 网站建设百度推广开户静态网页模板源代码
  • 共享虚拟主机做网站够用么如何从零开始做网站
  • 网站收录很好没排名南京奥美广告公司
  • 【学习系列】SAP RAP 14:行为定义-Save Options