Matlab &引用;未定义函数';函数名';对于类型为';双倍'&引用;
在不同的形状和大小中经常出现的一个问题是:为什么我会收到以下错误消息: “类型为'double'的输入参数的未定义函数'function_name'。”Matlab &引用;未定义函数';函数名';对于类型为';双倍'&引用;,matlab,undefined,octave,Matlab,Undefined,Octave,在不同的形状和大小中经常出现的一个问题是:为什么我会收到以下错误消息: “类型为'double'的输入参数的未定义函数'function_name'。” 这篇文章试图解决可能出现此错误消息的所有不同情况,并提出解决方案。如果您无意中发现此错误消息而不知道其含义。让我们感到安慰的是:90%的人都在谷歌上搜索过同样的短语 “类型为'double'的输入参数的未定义函数'int'。” 这个错误消息是不言自明的,但仍然可能导致混乱。(我随机选择了'int',它也可以是'train'、'table'、'm
这篇文章试图解决可能出现此错误消息的所有不同情况,并提出解决方案。如果您无意中发现此错误消息而不知道其含义。让我们感到安慰的是:90%的人都在谷歌上搜索过同样的短语 “类型为'double'的输入参数的未定义函数'int'。” 这个错误消息是不言自明的,但仍然可能导致混乱。(我随机选择了
'int'
,它也可以是'train'、'table'、'my_function'
或其他任何东西)
出现此错误的主要情况有两种:
which int
'int' not found.
很明显,Matlab找不到任何名为int
的函数或变量。因此,试图使用它是徒劳的。让我们将其与max
进行比较:
which max
built-in (C:\Program Files\MATLAB\R2014b\toolbox\matlab\datafun\@logical\max) % logical method
但是,即使得到“未定义的函数‘x’…”,也可能会得到以下结果。如果是,见下文第3点
which x
x is a variable.
1。但是函数“int”存在!甚至是强>
是的,int
存在,但前提是您拥有。由于工具箱是额外的软件包,必须单独购买(而且可能非常昂贵),所以您可能没有该软件包
如果出现“Undefined function”(未定义函数)错误,但在文档中找到了该函数,请查看左侧的菜单,或者简单地检查地址。标准Matlab函数具有如下地址:
mathworks.com/help/matlab/ref/max.html
^^^^^^
注意“matlab”部分。如果您看到这一点,那么您正在使用的函数是核心Matlab的一部分
但是,如果您看到如下地址,则您尝试使用的函数是符号工具箱的一部分:
mathworks.com/help/symbolic/int.html
^^^^^^^^
或者它可能是神经网络工具箱的一部分:
mathworks.com/help/nnet/ref/train.html
^^^^
解决方案:查找另一个不属于您没有的工具箱的函数。如果你是一个熟练的谷歌搜索者,你很可能会找到你想要的东西。如果你找不到,请寻求帮助。解释你做了什么,并表明你做了一些努力
2。但是函数是,并且是核心Matlab的一部分强>
即使函数是标准Matlab安装的一部分,并且有很好的文档记录,您仍然可能会遇到此错误。此错误最可能的原因是您使用的是旧版本的Matlab。如果查看文档,您将在页面底部看到以下内容:
在R2013b中引入
因此,如果您使用的是R2012b,那么您就不能使用例如表
解决方案:检查函数是否在您的Matlab版本中定义。如果它还没有实现,那么您要么需要更新Matlab,要么找到另一种方法。例如,表格
的替代方法可以是使用单元格或结构
3。但是变量“my_variable”存在!我在上面的行中创建了它强>
不,你没有。您很可能创建了变量myvariable
、myu variable
、myu variable
或上面一行中的类似内容。也可能是您创建了它,但无意中创建了它
解决方案:检查代码。查找输入错误、意外清除变量的位置等。在Matlab编辑器中,如果标记变量,将在底部显示以下行:“3个“x”的用法,如果定义并使用了函数。在未使用的变量下面还会有一条橙色线
4。但当我键入哪个y
?
如果在“未定义函数“y”上方出现错误,但告诉您y
存在,则错误消息将包含更多行:
my_function(x)
Undefined function or variable 'y'.
Error in my_function (line 2)
t = x*y;
>> which y
y is a variable.
这告诉您的是,您的(也检查)中有一个名为y
的变量
问题是函数无法访问此工作区:
函数不使用基本工作区。每个函数都有自己的函数工作区
如果希望函数查看并使用变量,则必须将其作为传递。这样,变量将成为该函数本地工作区的一部分。同样,如果希望在函数内部创建的变量在函数外部可访问,则必须将其作为函数的输出
y = 3;
res = my_function(y)
解决方案:将要用作输入参数的变量传递给所使用的函数。确保函数内部的名称在内部一致。即,整个函数中的名称必须相同。请注意,函数外部和内部的变量名称之间没有连接
y = 3;
res = my_function(y)
5。但我将变量作为输入传递给函数,但仍然得到相同的错误消息!?
是的,您可能使用变量作为输入。但是,不同函数中的变量名不一定相同(通常情况下并非如此)
假设您具有以下功能:
function output = my_function(x)
output = 2*y;
end
如果您从工作区调用它(如下面的代码所示),即使您使用y
作为输入变量,并在函数内部使用y
,也会得到与上面相同的错误
y = 3;
res = my_function(y)
这是因为在函数my_函数
内部,用作输入的变量将被称为x
,而不管它在函数外部被称为什么
y = 3;
res = my_function(y)
<