Octave 八度音阶中的@符号是什么?

Octave 八度音阶中的@符号是什么?,octave,Octave,八度音阶中的@符号是什么 例如,在代码中: [theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options); 我对代码的作用有一个大致的了解,但我不明白@(t)的作用。我已经查阅了octave文档,但是@符号似乎是一个很难搜索的术语。@在匿名函数定义中位于伪变量之前,例如: f = @(x) x.^2; y=[1:3]; f(y) 返回 1 4 9 快速查看帮助fminunc可以看出,在您的示例中,F

八度音阶中的@符号是什么

例如,在代码中:

[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

我对代码的作用有一个大致的了解,但我不明白
@(t)
的作用。我已经查阅了octave文档,但是
@
符号似乎是一个很难搜索的术语。

@在匿名函数定义中位于伪变量之前,例如:

f = @(x) x.^2;
y=[1:3];
f(y)
返回

1 4 9
快速查看帮助fminunc可以看出,在您的示例中,FCN是@(t)(costFunction(t,X,y))

来自控制台:

octave:1> help @

 -- @
     Return handle to a function.

     Example:

          f = @plus;
          f (2, 2)
          =>  4

     (Note: @ also finds use in creating classes.  See manual chapter
     titled Object Oriented Programming for detailed description.)

     See also: function, functions, func2str, str2func.
手册中的更多信息:



在您的特定代码中,“@”语法用于创建函数的“现场”实现(以匿名函数的形式),该函数采用单个参数,而不是
costFunction
one所需的三个参数。这是因为fminunc期望一个只使用一个参数的函数工作,因此可以有效地将更复杂的函数“包装”成一个与fminunc兼容的更简单的函数。

我搜索的@CrisLuengo的可能重复,因为我正在使用它。我得到的答案参考了Octave手册和Octave内置帮助。您链接到的问题是关于一个不同的程序,我没有使用,它的答案参考了MATLAB文档,而不是Octave。我不认为这是复制品。我找不到这个答案,重复的问题也不错。它们是指向好答案的指针。除非这个问题指向它,否则你不会找到答案。这就是为什么我们标记为复制。当然,MATLAB是一个不同的程序,但是Octave的任务是复制MATLAB的语法,因此阅读MATLAB文档是学习Octave的一个非常好的方法。MATLAB有很好的文档。@CrisLuengo当然,我经常欣赏指向其他答案的重复标志。我只是觉得,在这种情况下,尽管答案是相似的,但问题是不同的。我得到的答案更关注于我正在使用的东西。不管怎样都很好。@CrisLuengo一个人对这种评论感到恼火:Octave是一种独立于matlab的语言(尽管它尽一切努力保持不变)。堆栈溢出为它提供了一个单独的标记。据我所知,这些问题没有交叉列出。为什么一个有好问题的人必须看两个地方?我希望我们花更多的时间来回答问题,而花更少的时间去弄清楚一个问题是否重复