为什么我会得到一个;未定义的函数或变量<;变量名>&引用;这个MATLAB代码中有错误吗?

为什么我会得到一个;未定义的函数或变量<;变量名>&引用;这个MATLAB代码中有错误吗?,matlab,undefined,Matlab,Undefined,什么都没有出来。我在命令窗口中取出代码,然后按enter键……窗口中没有显示任何内容。如何获取输出?您不能在while循环的条件检查中使用变量globalerror,因为您在循环中才定义该变量。这就是为什么会出现错误“未定义函数或变量'globalerror'”。在任何语句中使用它之前,必须将globalerror初始化为某个值 另外,正如我在中提到的,您不能在脚本中声明函数。尝试从上面的脚本中删除函数calculateOutput,并将其放在自己的名为calculateOutput.m的文件中

什么都没有出来。我在命令窗口中取出代码,然后按enter键……窗口中没有显示任何内容。如何获取输出?

您不能在while循环的条件检查中使用变量
globalerror
,因为您在循环中才定义该变量。这就是为什么会出现错误“未定义函数或变量'globalerror'”。在任何语句中使用它之前,必须将
globalerror
初始化为某个值

另外,正如我在中提到的,您不能在脚本中声明函数。尝试从上面的脚本中删除函数
calculateOutput
,并将其放在自己的名为
calculateOutput.m
的文件中,然后将其保存在屏幕上的某个位置

我还发现了一些其他问题:

  • MATLAB使用基于1的索引,而不是基于0的索引。换句话说,向量或矩阵维度的第一个元素的索引值为1,而不是0
  • 我不知道你想用这句话做什么:

    function result = calculateOutput (weights, x, y)
    s = x * weights(1) + y * weights(2) + weights(3);
    if s >= 0
        result = 1;
    else
        result = -1;
    end
    
    因为变量
    output
    是代码中的标量,而不是可以被
    p
    索引的向量


您不能在while循环的条件检查中使用变量
globalerror
,因为只有在循环中才能将该变量定义为任何内容。这就是为什么会出现错误“未定义函数或变量'globalerror'”。在任何语句中使用它之前,必须将
globalerror
初始化为某个值

另外,正如我在中提到的,您不能在脚本中声明函数。尝试从上面的脚本中删除函数
calculateOutput
,并将其放在自己的名为
calculateOutput.m
的文件中,然后将其保存在屏幕上的某个位置

我还发现了一些其他问题:

  • MATLAB使用基于1的索引,而不是基于0的索引。换句话说,向量或矩阵维度的第一个元素的索引值为1,而不是0
  • 我不知道你想用这句话做什么:

    function result = calculateOutput (weights, x, y)
    s = x * weights(1) + y * weights(2) + weights(3);
    if s >= 0
        result = 1;
    else
        result = -1;
    end
    
    因为变量
    output
    是代码中的标量,而不是可以被
    p
    索引的向量


作为一个社区,如果将代码编辑为:whilex~=0x=10;x=x-func(x)end对于未来的读者来说更简洁,并且具有相同的概念。@MatlabDoug:这将帮助未来的读者,他们可能会遇到与OP类似的问题,但实际上,OP还没有意识到与此代码相关的一些其他问题是问题。我想说的是,它应该保持原样,以帮助这个特定的用户处理这些额外的错误。标题编辑(可能还有一些标记编辑)应该有助于概括这个问题。@ishamahajan:更新代码的一个问题是,由于您将
globalerror
初始化为0,因此从未输入while循环。您必须将其初始化为非零值。然而,这是你的最小问题。看起来,您甚至在理解所涉及的算法方面都有很大的困难,更不用说如何将它们从另一种语言翻译成MATLAB了。我认为您需要花一些时间来学习MATLAB的基础知识,从开始,这是非常好的。作为一个社区,如果将代码编辑为:while x~=0 x=10;x=x-func(x)end对于未来的读者来说更简洁,并且具有相同的概念。@MatlabDoug:这将帮助未来的读者,他们可能会遇到与OP类似的问题,但实际上,OP还没有意识到与此代码相关的一些其他问题是问题。我想说的是,它应该保持原样,以帮助这个特定的用户处理这些额外的错误。标题编辑(可能还有一些标记编辑)应该有助于概括这个问题。@ishamahajan:更新代码的一个问题是,由于您将
globalerror
初始化为0,因此从未输入while循环。您必须将其初始化为非零值。然而,这是你的最小问题。看起来,您甚至在理解所涉及的算法方面都有很大的困难,更不用说如何将它们从另一种语言翻译成MATLAB了。我认为您需要花一些时间来学习MATLAB的基础知识,从开始,这是非常好的。因为我有两个数据文件,一个用于输入,一个用于输出。我宁愿写T_Q2[p]…你说什么?你可以在我的另一个问题中检查这两个文件的格式…因为我有两个数据文件,一个用于输入,一个用于输出。我宁愿写T_Q2[p]…你说什么?你可以在我的另一个问题中检查这两个文件的格式。。。。
localerror = output(p) - output