我的功能绝对有效;它已经过测试,并且有一点被认可。
这是函数原型:
function [X Y] = calculateEllipse(x, y, a, b, angle)
%# Code here
end
以下是我在Matlab终端上发出的电话:
calculateEllipse (612, 391, 107, 60, 331)
这是我突然出现的错误:
??? Undefined function or method 'calculateEllipse' for input arguments of
type 'double'.
现在,我100%肯定我与该功能位于同一目录中。我甚至用过
addpath('C:\path-to-function')
确保。它只是不起作用,我很困惑。
感谢任何帮助。
答案 0 :(得分:5)
总结其他帖子,这是一个确定问题原因的工作流程。
您错误输入了该函数的名称。检查函数定义并确保它实际上称为calculateEllipse
。
您将该函数保存到名称不是函数名称的文件中。检查函数的文件名并确保它与函数名称匹配。
包含函数名称的文件夹不在MATLAB路径中。有几种方法可以检查这一点。键入path
以查看当前路径,或which calculateEllipse
以查找MATLAB用于该文件的位置。 (如果出现问题,最后一个命令将显示'calculateEllipse' not found.
。请注意addpath
不会永久更新路径,因此当您关闭MATLAB时,路径将被重置。使用{{1}为此。
包含该功能的文件夹是savepath
的子目录。这些文件夹保留用于完全成熟的工具箱;在这里存储代码时会发生不好的事情。有关详细信息,请参阅Bob的答案。
要检查的其他有用的事情是:
您可以调用存储在同一文件夹中的其他功能吗?
如果您将该功能保存在其他文件夹中,它会运行吗?
答案 1 :(得分:2)
补充Jeff所说的话;另一种可能性是你将函数放在MATLAB安装的某个地方。默认情况下,MATLAB不会为新文件重新搜索自己的文件结构;它假定其内部文件结构保持不变。确保您在MATLAB安装之外的某处保存文件(正如Jeff指出的那样,必须命名为calculateEllipse.m)。
请参阅http://www.mathworks.com/help/techdoc/matlab_env/f8-28521.html,或访问MathWorks网站并搜索
path cache
了解更多信息。
答案 2 :(得分:1)
我可以想到这可能发生的几个原因。
首先,正如Jeff所说,您可以将文件命名为“calcEllipse.m”而不是“calculateEllipse.m”。在这种情况下,您需要将该函数重命名为与您保存的m文件相同。
其次,您尚未添加正确的路径。否则,没有理由对我的知识给出错误。仔细检查您是否已添加正在保存的m文件的路径。一种简单的检查方法是,如果您输入'calculateEll'然后按Tab键,自动完成功能是否有效?如果没有,你就不在了。
希望这是你可以快速修复的事情之一!
答案 3 :(得分:1)
此问题的关键是:%Has no license available
。这意味着您尝试使用的函数目录中的函数与您不拥有的工具箱中的函数具有相同的名称。默认情况下,MATLAB禁用整个目录,而不仅仅是您不拥有的工具箱中的同名函数。这是一个例子:
目录中的文件:
myfunction.m
scoobydoo.m
blackman.m
如果我不拥有“信号处理工具箱”,那么blackman.m
将禁用整个目录。