2014-02-20 109 views
1

親愛的,我試圖解決我的一個問題。我必須處理15個變量,其結果將迭代生成。我必須爲每個變量存儲每次迭代的結果。我將在兩個循環下運行我的程序。一個是內循環,另一個是外循環。在內部循環中,我將每個迭代的結果存儲在15個變量中的12箇中,比如數組中,然後是外部循環中,我還將保存其餘3個變量的結果。簡單來說,我可以在數組的幫助下做到這一點。但我不想引入這麼多的數組。你能建議我嗎,可以使用結構或CellArrays嗎?如果你在上述結構下寫一個小程序,我會非常感激。我可以爲陣列的替代

X1 = zeros(a,1); 
X2 = zeros(a,1); 
X3 = zeros(a,1); 
X4 = zeros(a,1); 
X5 = zeros(a,1); 
X6 = zeros(a,1); 
X7 = zeros(a,1); 
X8 = zeros(a,1); 
X9 = zeros(a,1); 
X10 = zeros(a,1); 
X11 = zeros(a,1); 
X12 = zeros(a,1); 
X13 = zeros(b,1); 
X14 = zeros(b,1); 
X15 = zeros(b,1); 

    for i = 1:b 
     for j = 1: a 
      X1(i)= some calculation 
      X2(i) = some calculation 
      ...... and so on till 
      X12(i) = some calculation 
     end 
    x13(j)=some calculation 
    X14(j)= some calculation 
    X15(j) = some calculation 
end 

添加我的代碼一個小例子,在最後我想以顯示錶格形式的結果。是否可以將其轉換爲結構/ cellarray?

+2

一如往常,代碼的書面說明是比一些實際的代碼少得多的意義。你有任何實際的代碼來支持這個問題嗎? – paddy

+0

學習如何使用數組。他們是你的朋友。特別是在Matlab中,從技術上講,無論如何,所有變量都是數組。 – larsAnders

+0

我可以舉一個我的代碼的小例子 – Lucky

回答

0

我看到第12個陣列共享相同的長度,所以你可以把它們放在一個矩陣,矩陣的colums是你的陣列,以及同爲去年3個陣列

x1 = zeros(a,12); 
x2 = zeros(b,3); 

for i = 1:a 
    for k = 1:12 
     x1(i,k) = i+k; %// do something else 
    end 
end 
for i = 1:b 
    for k = 1:3 
     x2(i,k) = i+k; %// do something else 
    end 
end 

編輯

>> S.x2(3) = 3+3; 
:您還可以通過

a = 5; b = 4; S = struct('x1',zeros(a,1),'x2',zeros(a,1),'x15',zeros(b,1)); 

S = 

    x1: [5x1 double] 
    x2: [5x1 double] 
    x15: [4x1 double] 

定義的結構,你可以與修改做

而且你可以畫出這樣的

>> S.x2 

ans = 

    0 
    0 
    6 
    0 
    0 
+0

是的,這是一個好方法......但我必須將各個數組傳遞給不同的函數以進行不同的計算。以數組的形式,我可以給它們一個名字,所以可以記住。但是在矩陣形式中,我很難記住列名。另外,一個循環將在另一個循環下工作。所以兩個循環都不能在我的問題中分開。 – Lucky