MATLAB Answers

Can anyone please debug the error

조회 수: 8(최근 30일)
Kane0610 20 May 2014
댓글: Kane0610 20 May 2014
My function is as follows
function F = myobjfun(x,y) syms i x y k F = symsum(((y(3).*x(i).*log(1+x(i))/symsum(x(k),k,0,9)-(y(2).*x(i))),i,0,9); end
when i am passing x=[1,2,....10], y=[0.5,0.5]
I am getting the following error
Error using mupadmex Error in MuPAD command: Index exceeds matrix dimensions.
Error in sym/subsref (line 1580) B = mupadmex('symobj::subsref',A.s,inds{:});
Error in myobjfun (line 4) F = symsum(((y(3).*x(i).*log(1+x(i)))-(y(2).*x(i))),i,0,9);

  댓글 수: 0

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

채택된 답변

Pedro Villena
Pedro Villena 20 May 2014
편집: Pedro Villena 20 May 2014
You had made some errors:
  • symsum is a symbolic command for symbolic variables.
symsum(x(k),k,0,9) -> sum(x)
  • in matlab, don't exist the zero index, the first index is one.
  • you had miss one parenthesis some where.
  • the argument y, only have 2 elements.
y(3) -> y(1)
  • i think that you're confusing matlab script with another symbolic language like mathematica, cause you don't need symbolic toolbox.
function F = myobjfun(x,y)
n = numel(x);
i = 1;
F = y(1).*x(i).*log(1+x(i))/sum(x) - y(2).*x(i);
for i=2:n,
F = F + y(1).*x(i).*log(1+x(i))/sum(x) - y(2).*x(i);

  댓글 수: 1

Kane0610 20 May 2014
Thank you. :)

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

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!

Translated by