我是MATLAB的新手,但我必须在其中编写一些代码。我在让MATLAB看到我在外部.m文件中定义的函数时遇到了问题。这就是我所做的:我在我的家庭目录中创建了一个名为foo.m
的文件,其中包含以下内容:
function [y] = foo(x) % description y = x + 1
当我运行matlab(我的主目录是matlab的workdir)时,它没有看到foo
函数 - 它回复了标准的??? Undefined function or variable 'foo'
消息。但是help foo
或which foo
会返回正确的数据打印帮助文本,并分别指向foo.m
文件。
我必须遗漏一些东西,但我不知道它是什么。这变得非常烦人。
哦,经过多次尝试和错误尝试后,我设法调用了该功能。不幸的是,我不记得我执行的步骤顺序。此外,在重新启动matlab之后,它返回到通常的“未定义函数或变量”响应。
我在Linux上运行了7.11.0.584 matlab。
答案 0 :(得分:1)
需要告诉MATLAB搜索哪些目录来访问这些m文件。显然,不能搜索整个磁盘驱动器。 MATLAB搜索路径是一个目录列表,将按特定顺序搜索以查找您的函数。
help addpath
help pathtool
您永远不应将这些文件放在官方MATLAB工具箱目录中的任何位置。选择一个完全独立的目录。
最后,注意不要将自己的函数命名为与现有MATLAB函数的名称相匹配。否则,您的下一个问题将是您的代码无法正常工作的原因。这是奇怪和混乱的错误的常见原因。
答案 1 :(得分:1)
看来你在使用addpath时遇到了一些麻烦。尝试在matlab编辑器中打开文件并在文件中添加断点。如果文件不在Matlab的路径上,matlab应该询问您是否要更改目录或将文件添加到路径中,选择添加到路径。
如果这不起作用,请尝试将当前工作目录(显示在主窗口中)更改为与m文件相同的位置并调用该函数。如果这不起作用,你要么得到错误的名字,你的安装可能有问题。
如果matlab对文件所在的目录没有写入权限,则偶尔会出现问题,因此请检查,即确保目录或m文件不需要管理员权限。
哦,试试:
clear functions
将所有功能重新加载到内存中。
答案 2 :(得分:0)
该函数需要在MATLAB的路径中。使用pathtool
告诉MATLAB在哪里找到你的功能。请注意,如果您将一个函数命名为与现有函数相同的名称,MATLAB将根据您在pathtool中看到的路径列出的顺序,使用它首先找到的任何函数。
答案 3 :(得分:0)
虽然来晚了,但我希望它会帮助别人。 如果在您正在调用的函数所在的文件夹中,还有任何其他函数与MATLAB工具箱中的某个函数同名,那么Matlab将无法识别其许可证,因此将禁止整个文件夹执行,无论如何它被正确地添加到路径中。但是会显示帮助。
要检查它,请输入:
name_of_func.m
您将获得“%没有可用许可证”消息的路径。 如果它是你自己的功能,你不应该得到这个消息,而只是路径。 因此,在此文件夹中找到与MATLAB工具箱函数同名的函数,并将其重命名。我会解决问题:)。
最诚挚的问候 Wajahat