我有一组相当复杂的5个嵌套for循环,它们在每次迭代(比如x和y)上生成一对值,并且我想将每对值放在矩阵中的新行上。
通常,我会写一些类似的东西:
X = zeros(n, 2)
for i = 1:n
X(i, :) = newrow
end
但是我不确定这对于5个循环的集合是如何工作的。是否可以将每对新值写入矩阵中的下一个空行?目前我只是从1x2矩阵开始并在每次迭代时附加一个新行,但如果可能的话我想避免这种情况。
答案 0 :(得分:1)
您可以在最里面的循环中使用它,而无需预先分配X
。 不推荐(见方法2)。
X(end+1, :) = newrow;
更好的方法(以避免内存重新分配)将您的矩阵预分配到最终大小,然后使用您在最里面的循环中增加的行计数器索引每一行:< / p>
X = NaN(1000,2); %// for example. "1000" <-- product of number of iterations
r = 0;
for ii = 1:10
for jj = 1:100
r = r + 1; %// increase row counter
X(r,:) = newrow;
end
end