Bad cell reference with cell array of function handles.

5 次查看(过去 30 天)
I'm having a bad time figuring out what's wrong with this code:
dk = [1;1];
xmin = [1;1];
f = @(x1,x2)(x1 + x2);
aux = cell(size(xmin));
for i = 1 : length(xmin)
aux{i} = @(a)(xmin(i)+a*dk(i));
end
fa = @(a) f(aux{:}(a));
Given a multivariable function "f", when I try to evaluate "fa" at a given "a" (fa(1)), I get the following error: "Bad cell reference operation". Everything works perfectly by doing
fa = @(a) f(aux{1}(a), aux{2}(a));
but my application must work for an unknown number of variables of f.
  2 个评论
Thales Silva
Thales Silva 2017-8-21
编辑:Thales Silva 2017-8-21
The loop-variable is substituted and dk was previously defined. You can check it out by writing
fa = @(a) f(aux{1}(a), aux{2}(a));
and evaluating
f(1)
I'm using R2013a.

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2017-8-21
It is not legal to use () indexing with an unknown number of arguments produced by a cell array expansion. Also, MATLAB has no compact syntax for executing a number of functions with the same argument.
f_cell = @(args_cell) f(args_cell{:}); %utility anonymous function
fa = @(a) f_cell( cellfun( @(F) F(a), aux, 'uniform', 0) );

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Operators and Elementary Operations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by