在写matlab的时候,我想分别为变量a1,a2,a3……a100赋值为1,2,3……100
(举个例子,别问我为什么不用数组),显然一个一个赋值太麻烦了,我们想到用一个循环来帮我们。
我们可以写
for i = 1:100
eval(['a',num2str(i),' = i']);
end
接下来我就解释一下eval和num2str的机制。
eval的用法
eval()
简单来说就是执行一个字符串里的语句。
比方说
string1 = 'a=1';
eval(string1);
string2 = 'a*2';
eval(string2);
得到结果ans=2
。
那为什么我一开始写的代码eval(['a',num2str(i),' = i'])
在()
中间有一对[]
呢?
这是因为eval()
只能输入一个参数,而我的“字符串”是拼起来的,所以加一个[]
使其变成一个字符串。[]
的效果等同于strcat()
。
更麻烦的情况
如果原本想要执行的语句中,本身就带引号''
,比如我们用eval()
执行a='ddd'
: