有人可以告诉我在MATLAB中是否存在在循环的每次迭代中重命名变量的方法吗?
实际上,我想在一个包含循环索引的不同名称的循环中保存一个变量。感谢。
答案 0 :(得分:12)
根据您的评论,我建议使用cell array。这允许通过索引存储任何类型的结果。例如:
foo=cell(bar,1);
for ii=1:bar
foo{ii}=quux;
end
然后,您可以保存foo
以保留所有中间结果。虽然循环索引没有根据需要添加到变量名中,但它提供了相同的功能。
答案 1 :(得分:8)
忽略这个问题,“你为什么需要这个?”,你可以使用eval()
函数:
示例:
for i = 1:3
eval(['val' num2str(i) '=' num2str(i * 10)]);
end
输出结果为:
val1 =
10
val2 =
20
val3 =
30
答案 2 :(得分:0)
另一种方法,使用struct将循环索引保存到字段名称中:
for ii=1:bar
foo.(["var" num2str(ii)]) = quux;
end
这会创建一个包含foo.var1
,foo.var1
等字段的结构。这可以在不使用eval
的情况下实现您的目标。