Bad cell reference with cell array of function handles.

조회 수: 3 (최근 30일)
Thales Silva
Thales Silva 2017년 8월 21일
댓글: Thales Silva 2017년 8월 21일
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
KSSV
KSSV 2017년 8월 21일
What version you are on? It is working in 2017(a)
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) );
  댓글 수: 2
Guilherme Moraes
Guilherme Moraes 2017년 8월 21일
I had the same problem and this worked perfectly, thank you very much!
Thales Silva
Thales Silva 2017년 8월 21일
It works!!! God bless smart people... Thanks a lot...

댓글을 달려면 로그인하십시오.

추가 답변 (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