【问题标题】:Declaring variables before declaring a function在声明函数之前声明变量
【发布时间】:2014-03-27 16:35:30
【问题描述】:

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

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

Matlab 返回错误“Function keyword use is invalid here...”

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

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

【问题讨论】:

  • 您需要在一个新文件中定义一个函数,其中x 没有在function 关键字之前定义。
  • 或者使用匿名函数:fun = @(x) x^2+1;,然后像y = fun(3)一样调用它

标签: matlab function


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    1. 如果在文件中定义了函数,有两种可能:

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

        更多详情请见here

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

        更多详情请见here

      如您所见,无论哪种情况,文件都以函数声明(即主函数的声明)开头。

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

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

      更多详情请见here

    【讨论】:

      【解决方案3】:

      其他人提供了有关嵌套函数等的很好的信息。

      但是您得到错误的原因是“函数”是 Matlab 中的保留字。您不能使用此名称的函数。

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

      并将其粘贴到另一个名为 my_function.m 的文件中

      【讨论】:

        猜你喜欢
        • 2019-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-10
        • 1970-01-01
        • 2011-05-12
        • 2021-04-12
        相关资源
        最近更新 更多