理解fminunc参数和匿名函数,函数处理程序

时间:2017-07-02 23:01:27

标签: matlab

请耐心等待。问题是最后的问题。我试图弄清楚如何调用fminunc的区别。

这个问题源自Andrew Ng在Coursera机器学习课程中的第3周材料。 我正在反复这个问题。 Matlab: Meaning of @(t)(costFunction(t, X, y)) from Andrew Ng's Machine Learning class

我试图理解论证的含义

@(t) ( costFunction(t, X, y) )

用户wolfie,将其显示为缩短版本。任何人都可以解释为什么表达本身必须是那样的?在视频讲座中,他运行了这样的功能

[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options)

其中程序文件的costFunction输入和输出如下:

function [jVal, gradient] = costFunction(theta)

练习提供的代码具有此版本的功能: costFunction(theta, X, y)

为什么在没有匿名函数的第二种情况下没有调用fminunc,这就是为什么它被称为:

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

而不是:

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

1 个答案:

答案 0 :(得分:1)

成本函数应该将参数优化为输入,并返回要最小化的函数值。如果成本函数需要输入而不是待优化参数,那么匿名函数形式将起到作用:

funHandle = @(t) ( costFunction(t, X, y) );

除了待优化的 t 之外,这还允许您传递额外的输入 X y 。你可以检查一下 来自Mathworks的enter image description here了解更多信息。