在循环中收集不同的维度数据

时间:2016-10-28 19:27:43

标签: matlab

我想在循环中收集数据,例如

for k = 1:10
   A=magic(randi(5));
   ...
end

现在我想收集每次迭代的A数据。 感谢。

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式保存此数据并将其存储在单个变量中。由于您的数据在每次迭代时的大小可能不同,因此您可以选择单元格数组或结构来保存数据。

如果您选择使用单元格数组,这样的方法可以起作用:

k = 10;
A = cell(k, 1);
for idx = 1 : k
    A{idx} = magic(randi(5));
end

我们创建一个k元素的空单元格数组,并在循环的每次迭代中填充每个单元格。使用A{i}将访问迭代i中找到的数据。您还可以选择使用一个结构,其中每个字段都是基于迭代次数的字符串。这样的事情可以奏效:

k = 10; 
A = struct();
for idx = 1 : k
    A.(['data' num2str(idx)]) = magic(randi(5));
end

这将在结构k中创建A个字段,其中每个字段都是迭代中的数据。您可以通过执行i来迭代A.datai来访问数据。