【发布时间】:2018-07-04 16:32:59
【问题描述】:
使用deal,我们可以编写具有多个输出参数的匿名函数,例如
minmax = @(x)deal(min(x),max(x));
[u,v] = minmax([1,2,3,4]); % outputs u = 1, v = 4
但是如果你想为优化函数fminunc提供一个带有梯度的函数,这是行不通的。 函数 (编辑:这不是真的,你只需要指定你是否真的想使用渐变与否,使用例如fminunc 调用输入函数有时用一个,有时用两个输出参数。optimset('SpecifyObjectiveGradient',true)。然后在一次调用中它总是要求相同数量的参数。)
我们必须提供类似的东西
function [f,g] = myFun(x)
f = x^2; % function
g = 2*x; % gradient
可以用一个或两个输出参数调用。
那么有没有办法在不使用 function 关键字的情况下执行相同的内联操作?
【问题讨论】:
-
旁注:与您的
minmax类似的函数最近 (R2017a) 以bounds的名称添加到 MATLAB。
标签: matlab output variadic-functions anonymous-function function-handle