2012-02-16 128 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