2017-09-25 75 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