Matlab - 从另外两个组合创建新矩阵

时间:2013-11-17 13:13:01

标签: matlab matrix

我有 两个矩阵:

A = [1 2; 3 4; 2 6; 4 7];
B = [2 4; 4 4; 4 3; 5 8];

我如何创建新的矩阵,它会有顺序,先是A行,然后是第一行B行,然后是第二行,然后是第二行B等。

像这样:

C = [1 2; 2 4; 3 4; 4 4; 2 6; 4 3; 4 7; 5 8];

2 个答案:

答案 0 :(得分:2)

如果您愿意亲自动手reshape - ing:

C = reshape( [A.';B.'], 2, [] ).';

为什么会这样? Matlab将其矩阵作为列堆栈存储在内存中。转置AB并在内存中一个接一个地堆叠它们的行(现在是列)会创建一个具有正确元素顺序的4-by-n矩阵。现在我们reshape这个矩阵只有2行,并将其转换回来获得所需的结果。当当!

答案 1 :(得分:1)

我的具体例子,你可以写:

C(1:2:7,:) = A ; C(2:2:8,:) = B

请参阅:

octave:1> A = [1 2; 3 4; 2 6; 4 7];
octave:2> B = [2 4; 4 4; 4 3; 5 8];
octave:3> C(1:2:7,:) = A ; C(2:2:8,:) = B
C =

   1   2
   2   4
   3   4
   4   4
   2   6
   4   3
   4   7
   5   8

octave:4> 

现在假设AB具有相同的尺寸,您可以编写

C(1:2:2*size(A,1)-1,:) = A ; C(2:2:2*size(A,1),:) = B

更为一般。