MATLAB Answers

eval([ans '=' num2str(x0(i)) ';']); gives an error "The expression to the left of the equals sign is not a valid target for an assignment". what could be the problem?

Balaji Jayaraman 님이 질문을 제출함. 8 Nov 2017
최근 활동 Adam 님이 댓글을 추가함. 8 Nov 2017
eval([ans '=' num2str(x0(i)) ';']); gives an error "The expression to the left of the equals sign is not a valid target for an assignment". what could be the problem?

태그

답변 수: 2

Answer by Guillaume
on 8 Nov 2017
Edited by Guillaume
on 8 Nov 2017

There are many thing wrong with
eval([ans '=' num2str(x0(i)) ';'])
  • eval expect a string or char array. As per Mischa's answer the whole expression probably needs to be enclosed in quote.
  • do not use ans as a variable name. It's a special variable used by matlab.
  • and worst of all, is the use of eval. There's normally very little reason to use eval, in the above case, there's absolutely no reason, other than making the code harder to debug, more difficult to read and obviously harder to use since you can't get the syntax right
SomeVariableNameOtherThanANS = num2str(xi(0));
would do exactly the same.

  댓글 수: 0

로그인 to comment.


Answer by Mischa Kim
on 8 Nov 2017

Just wondering if the following would do the trick...
eval('ans = num2str(x0(i));')

  댓글 수: 4

표시 이전 댓글 수: 1
I do not have enough information here to judge what is required and what is not. The question posed contains one single command.
it is a code written for gradient descent function.
function [xsol, fsol] = GradientDescent(f,varx,x0,epis,gamma)
for i=1:length(varx)
nabf(i) = diff(f,varx(i));
end
nabf = vpa(nabf,5);
for i=1:length(varx)
char(varx(i));
eval([ans '=' num2str(x0(i)) ';']);
end
nabfloop = subs(nabf)';
while(double(norm(nabfloop))>=epis)
x0 = x0 - gamma*double(nabfloop);
x0
for i=1:length(varx)
char(varx(i));
eval([ans '=' num2str(x0(i)) ';']);
end
nabfloop = subs(nabf)';
end
xsol = x0;
for i=1:length(varx)
char(varx(i));
eval([ans '=' num2str(x0(i)) ';']);
end
fsol = double(subs(f));
end
Most of that code appears to do nothing or create variables that nothing is done with!

로그인 to comment.



Translated by