在尝试使用 MATLAB 的内置函数或已安装的​工具箱时,为什么会收​到“未定义函数或变量​”错误?

조회 수: 504 (최근 30일)
MathWorks Support Team
MathWorks Support Team 2014년 2월 19일
편집: MathWorks Support Team 2023년 6월 29일
在使用 MATLAB 的内置函数时,我收到以下错误:
ERROR: ???未定义函数或变量“<function name>”。

채택된 답변

MathWorks Support Team
MathWorks Support Team 2023년 2월 20일
편집: MathWorks Support Team 2023년 6월 29일
如果您无法使用 MATLAB 的内置函数或相关工具箱,请确保已安装了函数文件。
 
如果您知道函数属于哪个工具箱,请通过在您的 MATLAB 命令行窗口中运行以下命令来验证是否已安装该工具箱,以及该工具箱的版本是否与 MATLAB 版本匹配:
ver
如果您没有看到工具箱,但您认为已安装它,请尝试将 MATLAB 路径重置为默认值。MATLAB 将工具箱信息存储在缓存文件中。您需要首先更新此缓存,然后重置路径。为此,请执行以下操作:
 
1.转到“文件”(File) 菜单,再到“预设”(Preferences)
2.转到“常规”(General) 标题。点击“更新工具箱路径缓存”(Update Toolbox Path Cache) 按钮,然后按“确定”(OK)。
3.转到“文件”(File) 菜单,再到“设置路径”(Set Path)
4.点击“默认值”(Default),按“确定”(OK) 进行更改,然后点击“保存”(Save),最后点击“关闭”(Close)。
(如果您向 MATLAB 中添加了任何自定义路径,稍后您将需要恢复它们)
 
再次运行“ver”来查看是否已安装工具箱。如果没有,您可能需要重新安装该工具箱才能使用此函数。有关安装工具箱的详细信息,请参阅相关解决方案:“如何将其他工具箱安装到现有的 MATLAB 中”。
 
在 ver 显示您的工具箱之后,运行以下命令来查看您是否可以找到该函数:
which -all <函数的名称>
将 <函数的名称> 替换为函数的名称。应向您显示函数文件的路径。如果您获得“未找到 <函数的名称>”的消息,则您可能需要重新安装该工具箱才能使用此函数。
 
注意:如果该函数的多个实例不在 $MATLABROOT\toolbox 子文件夹中(其中 $MATLABROOT 是您的计算机上的安装文件夹),则您在运行内置函数时可能会遇到问题。有关详细信息,请参阅相关解决方案:“在使用自定义函数时,为什么会收到‘未定义函数或变量’”。
 
如果您收到错误消息“没有可用的许可证(license)”,则存在与许可相关的问题阻止您使用该函数。要查找发生的错误,您可以使用以下命令:
license checkout <toolbox_license_key_name>
将 <toolbox_license_key_name> 替换为包含您的函数的工具箱的合适键名称。要查找许可证键名称,您将需要查看许可证文件中的 INCREMENT 行。有关如何查找许可证文件的信息,请参阅相关解决方案:1-63ZIR6 -“MATLAB 的许可证文件位于何处?”
 
所有工具箱的许可证键名称都位于 license.dat 文件中的每个 INCREMENT 标签之后。例如:
INCREMENT MATLAB MLM 17 00-jan-0000 0 B454554BADECED4258 \
HOSTID=123456 SN=123456
如果您的 license.dat 文件没有 INCREMENT 行,请与您的许可证管理员联系来获取这些 INCREMENT 行。
例如,要测试 Symbolic Math Toolbox 的许可,可以运行以下命令:
license checkout Symbolic_Toolbox
正确的测试将产生结果“ANS=1”,否则将出现许可证管理器错误。您可以在下方链接中查找许可证管理器错误来解决错误:
 
 
或在下面与安装支持团队联系来解决错误:
 
在与支持团队联系时,提供您的许可证编号、您的 MATLAB 版本、您使用的函数和许可证管理器错误(如果适用)。

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 启动和关闭에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!