在Matlab中写入矩阵中的下一个空行

时间:2014-03-05 13:27:09

标签: matlab matrix nested-loops

我有一组相当复杂的5个嵌套for循环,它们在每次迭代(比如x和y)上生成一对值,并且我想将每对值放在矩阵中的新行上。

通常,我会写一些类似的东西:

X = zeros(n, 2)

for i = 1:n

X(i, :) = newrow

end

但是我不确定这对于5个循环的集合是如何工作的。是否可以将每对新值写入矩阵中的下一个空行?目前我只是从1x2矩阵开始并在每次迭代时附加一个新行,但如果可能的话我想避免这种情况。

1 个答案:

答案 0 :(得分:1)

  1. 您可以在最里面的循环中使用它,而无需预先分配X不推荐(见方法2)。

    X(end+1, :) = newrow;
    
  2. 更好的方法(以避免内存重新分配)将您的矩阵预分配到最终大小,然后使用您在最里面的循环中增加的行计数器索引每一行:< / 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