2013-10-10 39 views
-1

我的代碼值象下面這樣:如何存儲的每個迭代

我有一個關於我的代碼實際上是兩個問題:

1:從這個代碼,我想找到我D.Even的價值得到「D」的值,但每次當前的「D」與先前的「D」加起來。就像得到

D(1,:)=30 30 30 30 30 
D(2,:)=60 60 60 60 60 
D(3,:)=89 89 89 90 90 

但我想

D(1,:)=30 30 30 30 30 
D(2,:)=30 30 30 30 30 
D(3,:)=29 29 29 30 30 

我知道我可以通過獲取for循環後提取先前D當前D做到這一點,但我不希望這樣做。我想內for loop.

  1. 另一個問題是我需要運行iteration=100 times這段代碼做一些事情,我需要存儲的0123價值在單元陣列中的每個試驗,因爲後來我需要使用那些值D.

Matlab專家需要您的幫助和兩個問題的建議。

+0

'用於錯誤= 0.2:0.01:0.39; for iteration = 1;'這應該做什麼?不要在for循環聲明之後放置';'並且'iteration = 1'只運行一次...? – Dan

+0

錯誤是恆定的....對於每次迭代錯誤都不會改變。我只需要運行這個代碼20000次,每次迭代都需要存儲「D」的值。 – user2663126

+0

刪除';'結尾的錯誤= 0.2:0.01:0.39;'。 – Dan

回答

1

第一部分:在循環之後執行此

D = [D(1,:), diff(D)]; 

例如

D = [30 30 30 30 30 
    60 60 60 60 60 
    89 89 89 90 90]; 

[D(1,:); diff(D)] 

ans = 

    30 30 30 30 30 
    30 30 30 30 30 
    29 29 29 30 30 

第二部分:爲什麼只是將它存儲在一個新矩陣中?

AllTheDs{counter} = D %// This will be outside your current for-loop but presumably inside your new loop that counts to 20k 
+0

對不起,但對於第二部分我不明白你的解決方案。計數器的價值是什麼? – user2663126

+0

@ user2663126'for counter = 1:20000 ....'是不是你想要的?否則我不明白你的第二個問題。 – Dan

+0

@丹 - 它不工作... – user2663126

0

我的第一個想法也是由@Dan提出的diff解決方案。然而,我開始懷疑這個問題是否可能是你只是不加意圖地添加東西而已。

我看你有沒有這個爲其中rec2_Wopt更新

rec2_Wopt(1) = rec2_Wopt(1) + sum(RecP) ; 

因此,它是合乎邏輯的,第二循環後,它將包括第一循環的增加和第二循環的唯一線路。

要解決這個問題,請通過重置變量來啓動每個循環。此變量將是:

rec2_Wopt(1) = 0 

或者

rec2_Wopt = zeros(1, length(N)) ; 
+0

@ Dennis Jaheruddin我得到了我正在尋找的只是添加結果= [D(1,:); DIFF(d)];之後,我想要計算每個D列中的N的數量。我還通過添加一個循環來完成此操作。現在我想運行整個程序1000次。我希望每次有一個不同的D會被生成,並且從那個D我將計算D的每列中的N的數量並取「N的數量」的平均值。就像在D的第一列的第一次試驗一樣,N的次數是52次,在第二次試驗中N的次數是51次,那麼我將採用(51 + 52)/ 2 =結果的平均值。請建議。 – user2663126

+0

@ user2663126看來這不是原來的問題。因此,答案不會在這裏。如果你認爲你遇到了另一個問題,請檢查它是否在網站的範圍內,如果有的話,請提出一個新問題。 –