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];
答案 0 :(得分:2)
如果您愿意亲自动手reshape
- ing:
C = reshape( [A.';B.'], 2, [] ).';
为什么会这样?
Matlab将其矩阵作为列堆栈存储在内存中。转置A
和B
并在内存中一个接一个地堆叠它们的行(现在是列)会创建一个具有正确元素顺序的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>
现在假设A
和B
具有相同的尺寸,您可以编写
C(1:2:2*size(A,1)-1,:) = A ; C(2:2:2*size(A,1),:) = B
更为一般。