matlab提示 The expression to the left of the equals sign is not a valid target for an assignment

问题描述:

matlab提示 The expression to the left of the equals sign is not a valid target for an assignment
for idx = 1:length(test{3})
eval([ test{1}{idx},' = ',num2str(test{3}(idx)),';']);
end
是哪儿不对呢

一个等号表示赋值,两个等号才表示判断是否相等.你这里相当于向test{1}{idx}赋值,所以报错了.eval这个是干啥的啊,为啥我只运行它后面的又可以运行呢?

eval是把一个字符串当成命令来执行的函数。


假设

test{1}{idx}='abc'
test{3}(idx)=2

那么

eval([ test{1}{idx}, ' = ', num2str(test{3}(idx)), ';']);

的作用就相当于语句

abc=2;

 而如果你直接执行

test{1}{idx}=num2str(test{3}(idx));

相当于如下赋值语句

test{1}{idx}='2';