2016-05-12 43 views
0

作爲更大腳本的一部分存儲,我想將矩陣中while循環的數據存儲起來。我想將一個1738x3的COG_Ton_Av矩陣的一部分保存在一個新的矩陣中。 COG_Ton_Av在每個循環內都會改變,所以我想將結果存儲在外部。我已經找到了關於如何將數據存儲在矢量中的多個條目,但是沒有用於矩陣。我試過的是:Matlab - 將矩陣中的循環數據(不是矢量)

valuesforts= zeros(1000,3); 
yr =1 
while Qn>0 
yindex = Gmhk*100 
zindex = round(gs*100) 
ts = (COG_Ton_Av ((zindex:yindex),:)) 
valuesforts(yr)=ts 
yr = yr+1 
end 

我剛剛發佈了while循環的部分以使問題更容易,我希望它足以回答這個問題。 嘗試這個時,我得到以下錯誤:

下標分配維度不匹配。

錯誤cutoff_work14_priceescalation_and_stockpiling(線286) valuesforts(歲)= TS

回答

0

的錯誤意味着ts是不同的大小,以valuesforts(和它被索引以年爲矢量。

如果尺寸的TS的循環的每次迭代變化,然後使用細胞標記:

valuesforts = cell(<number of years>); 
... 
valuesforts{yr} = ts; 

然後TS的尺寸並不重要

要提取數據也可以使用{}例如

meanValues(yr) = mean(valuesforts{yr}); 

請記住,valueforts的每個單元格內的矩陣與ts被指定時的矩陣將具有相同的擴展。

另外,如果TS總是相同大小的預分配valuesforts爲:

valuesforts = zeros(<number of years>,<expected length of ts>,3); 
... 
valuesforts(yr,:,:) = ts; 

然後取決於你想要valuesforts做..重塑,或繪製它的內容。

在最壞的情況下(不推薦),您可以讓valuesforts隨着每次循環迭代而增長。 初始化空:

valuesforts=[]; 

然後垂直追加TS到valuesforts:

valuesforts = [valuesforts; ts]; 

這將給你的年,3列的矩陣和數量*行的在每個循環迭代TS數。

+0

感謝您的答案,它現在可以工作,但輸出是在單元內 - 我怎樣才能訪問有用的事後呢? (基本上回到一個matlab矩陣?) – KiW

+0

更新與示例如何從單元格提取數據 – Timur

+0

謝謝:)但有沒有機會再次作爲矩陣出來?這樣我可以繼續計算嗎? ....我需要價值單可用...但感謝您的幫助:) – KiW