Для чего используется символ @ в Octave? - PullRequest
0 голосов
/ 28 сентября 2018

Для чего используется символ @ в Октаве?

Например, в коде:

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

У меня есть общее представление о том, что делает код, но я не знаюне понимаю, для чего существует @(t).Я просмотрел документацию по октаве, но символ @, похоже, трудно найти.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

С консоли:

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.

Дополнительная информация в руководстве: https://octave.org/doc/interpreter/Function-Handles.html


В вашем конкретном коде синтаксис '@' используется для создания "реализация функции на месте (в форме анонимной функции), которая принимает аргумент single , в отличие от трех, требуемых вашим costFunction.Это потому, что fminunc ожидает работу функции, которая принимает один аргумент, и, следовательно, эффективно «оборачивает» более сложную функцию в более простую, совместимую с fminunc.

0 голосов
/ 28 сентября 2018

@ предшествует фиктивной переменной в определении анонимных функций, например:

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

возвращает

1 4 9

быстрый взгляд на справку fminunc показывает, что FCN в вашем примере@ (t) (costFunction (t, X, y))

...