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?

1 次查看(过去 30 天)
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 个)

Guillaume
Guillaume 2017-11-8
编辑:Guillaume 2017-11-8
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.

Mischa Kim
Mischa Kim 2017-11-8
Just wondering if the following would do the trick...
eval('ans = num2str(x0(i));')
  4 个评论
Balaji Jayaraman
Balaji Jayaraman 2017-11-8
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Whos 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by