如何避免元素被第二个循环覆盖?

时间:2017-09-25 11:06:49

标签: matlab for-loop

我想使用两个循环和一个给定的等式生成一个数组。在我的代码中,第一个for循环每次都会覆盖在上一次运行中生成的元素。我的数组最终只有最后一组元素(对于a = 9)。这是代码:

%Pixel information generated 

n=3
m=3

for a=7:9

    for r=1:3
      k(r)=a+ (r-1)*(n*m)
      disp(k);
      r=r+1
    end
a=a+1
end

我如何避免这种情况并获得" a"的每个值K的所有值?

由于 的Manoj

1 个答案:

答案 0 :(得分:1)

由于r是您的索引,因此您的索引将仅在1到3之间变化。每次执行第一个循环时都会这样。因此,您需要一个独立的索引。您也不需要增加ra,因为for循环函数会自动执行此操作。最后,最好使用k的单元格数组,因为它在for循环中不断增长。

<强>代码

n=3;
m=3;

k = cell(1,1); % cell array
index = 1; % independent index

for a=7:9

    for r=1:3
      k{index}=a+(r-1)*(n*m);
      index = index + 1;
    end

end

k = cell2mat(k)

<强>输出

k =

     7    16    25     8    17    26     9    18    27