2017-09-25 91 views
0

我想用两个循环和一个给定的方程来生成一个数组。在我的代码中,第一个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 

我怎样才能避免这种情况和取得的K所有值“A”的每个值?

感谢 马诺

+1

YUA可以尝试使用像'K(A,R)'什么的,因为'了''从开始7'你可以为第一个索引定义一个计数器(在第一个循环开始之前初始化为'1',并在第一个循环结束时递增)。还要注意循环('a'和'r')的自变量是自动递增的,因此你不应该使用'r = r + 1'和'a = a + 1' –

+0

谢谢,k(a,r)生成3 x 9矩阵而不是3 x 3,但在该矩阵中,也存在正确的3 x 3矩阵。 – Manoj

+0

为什么这个问题投下来了吗?,我不明白原因! – Manoj

回答

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 
+0

@Manoj,这是你在找什么? – 10a