2

我的功能肯定有效;它已经过测试,并且在某一时刻被认可。

这是函数原型:

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')

确保;确定。它只是不起作用,我很困惑。

任何帮助表示赞赏。

4

4 回答 4

7

总结其他帖子,这是确定问题原因的工作流程。

  1. 您输入了错误的函数名称。检查函数定义并确保它确实调用了calculateEllipse.

  2. 您将函数保存到一个名为函数名以外的文件的文件中。检查函数的文件名并确保它与函数名匹配。

  3. 包含函数名称的文件夹不在 MATLAB 路径上。有几种方法可以检查这一点。键入path以查看当前路径,或which calculateEllipse查找 MATLAB 用于该文件的位置。(如果有问题,最后一条命令会显示'calculateEllipse' not found.。注意,addpath不会永久更新路径,所以当你关闭 MATLAB 时,路径将被重置。savepath用于此。

  4. 包含该函数的文件夹是matlabroot. 这些文件夹是为成熟的工具箱保留的;当您将代码存储在这里时,就会发生不好的事情。有关更多信息,请参阅Bob 的答案

其他有用的检查是:

  1. 您可以调用存储在同一文件夹中的其他函数吗?

  2. 如果将函数保存在不同的文件夹中,它会运行吗?

于 2011-08-31T13:10:36.763 回答
4

补充杰夫所说的;另一种可能性是您将函数放置在 MATLAB 安装中的某个位置。默认情况下,MATLAB 不会重新搜索自己的文件结构以查找新文件;它假定其内部文件结构保持不变。确保将文件(正如 Jeff 指出的,必须将其命名为 calculateEllipse.m)保存在 MATLAB 安装之外的某个位置。

请参阅https://www.mathworks.com/help/matlab/matlab_env/toolbox-path-caching-in-the-matlab-program.html,或访问 MathWorks 网站并搜索

path cache

了解更多信息。

于 2011-08-31T05:00:25.067 回答
2

这个问题的关键是:%Has no license available. 这意味着您尝试使用的函数目录中的函数与您不拥有的工具箱中的函数具有相同的名称。默认情况下,MATLAB 会禁用整个目录,而不仅仅是您不拥有的工具箱中的同名函数。这是一个例子:

目录下的文件:

myfunction.m
scoobydoo.m
blackman.m

如果我没有“信号处理工具箱”,那么blackman.m将禁用整个目录。

于 2013-12-18T15:39:18.240 回答
1

我可以想到这可能发生的几个原因。

首先,正如 Jeff 所说,您可以将文件命名为“calcEllipse.m”而不是“calculateEllipse.m”。在这种情况下,您需要将函数重命名为与您保存的 m 文件相同。

其次,您没有添加正确的路径。否则,没有理由对我的知识造成错误。仔细检查您是否添加了正在保存的 m 文件的路径。一个简单的检查方法是,如果您输入“calculateEll”然后按 Tab,自动完成功能是否有效?如果不是,你就出局了。

希望这是您可以快速解决的问题之一!

于 2011-08-31T01:51:05.033 回答