在声明函数之前声明变量

时间:2014-03-27 16:35:30

标签: matlab function

假设我想声明一些变量然后声明一个函数:

x = 2;
function y = function(x)
    y = (x^2)+1;
end
y = function(x);
disp(y)

Matlab返回错误"此处函数关键字使用无效..."

为什么在声明函数之前我不能声明变量或写任何文本?有充分的理由还是怪癖?

编辑: 为了澄清,我确实知道如何解决这个问题(但感谢你的建议),但我想我是在问为什么Matlab团队做出了这个决定。通过将函数声明作为文件的第一行,它是否对内存管理有影响,还是什么?

3 个答案:

答案 0 :(得分:1)

Scala的REPL提示符可以在变量之后定义一个函数。所以这是Matlab的内部内部选择(如果你想要的话)。

答案 1 :(得分:1)

  1. 如果在文件中定义了一个函数,则有两种可能:

    • 该文件的主要功能。然后该文件必须以函数声明开头:在您的示例中,function y = fun(x)。我使用fun作为函数的名称。我不认为function可以用作函数的名称。

      有关详细信息,请参阅here

    • 嵌套函数。在这种情况下,函数声明和定义可以在前一种情况的另一个函数内。

      有关详细信息,请参阅here

    如您所见,在任何一种情况下,文件都以函数声明(即主函数的声明)开头。

  2. 该功能也可以定义为匿名函数。然后不需要声明,并且可以在任何地方定义该函数。但是有一个限制:该函数只能包含一个语句(因此它不能定义除输出之外的内部变量)。因此,此方法只能用于简单的功能。

    在您的示例中,该函数可以匿名定义为fun = @(x) x^2+1

    有关详细信息,请参阅here

答案 2 :(得分:1)

其他人已经提供了有关嵌套函数等的详细信息。

但是你得到错误的原因是“函数”是Matlab中的保留字。你不能拥有这个名字的功能。

function y = my_function(x)
    y = (x^2)+1;
end

并将其粘贴在另一个名为my_function.m

的文件中