2015-01-06 125 views
0

我已經寫了下面的for循環;完成前一個循環後執行for循環

%Name Variables 
%Time Data Structure 
Time_DataC1 = []; 
for aa = 1:38 
    for bb = 1:38 
    fieldname = ['Time' num2str(aa)]; 
    Time_DataC1.(fieldname) = dataCOMB{1,1}{1,bb}(1:1024,1); 
    end 
end 

它創建了一個時間數據結構。基本上這個代碼從一個數組中獲取數據,並將第一列Time1,Time2命名爲Time38等。它爲38個數據集執行此操作。然而,一旦做到這一點,是有可能改變的代碼

Time_DataC1.(fieldname) = dataCOMB{1,cc}{1,bb}(1:1024,1); 

其中cc現在從1到2那張然後BB值從1開始,再繼續38。這將允許我記錄從Time39到Time76的下一次數據集。一旦完成,可以將cc更改爲3並重復該過程,直到cc最終以40的值結束?

我試過使用ifelseif聲明,但我不斷收到錯誤。

+0

它的工作! :)謝謝:)令人難以置信的最簡單的方法是如何工作的! – Jerry

回答

1

您可以使用:

for cc=1:2 
    for aa=1:38 
     for bb = 1:38 
      fieldname = ['Time' num2str(aa + (cc-1)*38)]; 

這樣一來,你的字段名稱使用外循環(cc)報數你有多少次計數,38了。

+0

我注意到一個錯誤。它正確地命名文件時間1到時間78,但它收集錯誤的數據,我不明白爲什麼。正如你從上面可以看到,cc應該保持在1,bb應該從1開始並以1的增量移動,直到達到38的值。這會給我Time1-38。然後cc應該變爲2並保持在該值,直到bb再次增加1到38。但是,我遇到了第一個數據來自U_Velocity(fieldname)= dataCOMB {1,1} {1,38}(1:1024,2)的問題。在哪裏bb = 38而不是1.關於如何解決這個問題的任何想法? – Jerry

+0

對不起。我不能完全按照你的問題。你什麼時候到達dataCOMB {1,1} {1,38}(1:1024,** 2 **);?在你的問題中,你遍歷dataCOMB {1,** cc **} {1,** bb **}(1:1024,1); - 現在讓我問 - 你需要** aa **爲了什麼?除了名字?或者應該只是一個循環而不是兩個? – Schorsch

+0

我想通了。它應該只是一個循環,而不是兩個,所以我只是調整了代碼,它現在可以工作 – Jerry