2012-02-16 160 views
0

例如,我有6個相似的矩陣(矩陣A1到A6),但具有不同的數據。Matlab:如何組合不同的矩陣?

矩陣A1:

2011/1/1 23.00 33.00 23.00 35.00 ...

2011年1月2日19.00 20.00 22.00 22.00 ......

我想合併這6個矩陣並創建一個新的矩陣B.矩陣B將具有:6列和行長度等於(長度(A列)-1)。

Matrix B的第一列是Matrix A1的第一行(排除日期)。

矩陣B的第二列是矩陣A2的第一行(不包括日期)...等等...

我正在尋找一個腳本。謝謝!

回答

2
B = [A1(1,2:end); A2(1,2:end); A3(1,2:end); A4(1,2:end); A5(1,2:end); A6(1,2:end)]'; 

B = [A1(1,2:end)' A2(1,2:end)' A3(1,2:end)' A4(1,2:end)' A5(1,2:end)' A6(1,2:end)']; 

UPDATE

代替具有使用細胞陣列,其中每個小區包含一個矩陣考慮具有不同名稱的多個矩陣。如果A是一個單元陣列,

A = {A1, A2, A3, A4, A5, A6}; 

然後可以訪問第k個矩陣A{k}。在這種情況下,您可能在單元陣列中有不同數量的矩陣,並使用例如以下代碼以矢量化方式得到B:

B = cell2mat(cellfun(@(x) x(1,2:end)', A, 'uniformoutput',0)); 
+0

謝謝!只是好奇,如果我想縮短這段代碼,我該怎麼辦?將它分成不同的行或循環?劇本會是什麼? – user1205030 2012-02-16 16:05:23

+0

非常有用的幫助!謝謝! – user1205030 2012-02-16 16:10:26

+0

如果你想堅持你的變量名稱,你可以在for循環中使用EVAL,但這被認爲是一種不好的做法。使用單元陣列是優選的。 – yuk 2012-02-16 16:14:07