4

有人可以告诉我是否有办法在 MATLAB 的循环的每次迭代中重命名变量?

实际上,我想将一个变量保存在一个具有不同名称的循环中,该名称包含循环的索引。谢谢。

4

3 回答 3

12

根据您的评论,我建议使用cell array。这允许通过索引存储任何类型的结果。例如:

foo=cell(bar,1);
for ii=1:bar
    foo{ii}=quux;
end

然后,您可以保存foo以保留所有中间结果。尽管循环索引没有按照您的意愿添加到变量名称中,但它提供了相同的功能。

于 2013-08-09T09:17:12.080 回答
8

忽略这个问题,“你为什么需要这个?”,你可以使用这个eval()功能:

例子:

for i = 1:3
  eval(['val' num2str(i) '=' num2str(i * 10)]);
end

输出是:

val1 =
    10

val2 =
    20

val3 =
    30
于 2013-08-09T08:45:35.000 回答
0

另一种方式,使用结构将循环索引保存到字段名称中:

for ii=1:bar
    foo.(["var" num2str(ii)]) = quux;
end

这将创建一个具有诸如等字段的结构foo.var1foo.var1这可以在不使用eval.

于 2013-08-09T09:55:49.517 回答