10
如何將2個矩陣A,B合併爲一個,以便新矩陣C = A的第1行,然後是B的第1行,然後是A的第2行,B的第2行,A的第3行第3行B等?最好沒有for循環?matlab - 如何合併/交錯2矩陣?
ex:A = [1 2 3; 4 5 6],B = [5 5 5; 8 8 8]。
AB = [1 2 3; 5 5 5; 4 5 6; 8 8 8]。
如何將2個矩陣A,B合併爲一個,以便新矩陣C = A的第1行,然後是B的第1行,然後是A的第2行,B的第2行,A的第3行第3行B等?最好沒有for循環?matlab - 如何合併/交錯2矩陣?
ex:A = [1 2 3; 4 5 6],B = [5 5 5; 8 8 8]。
AB = [1 2 3; 5 5 5; 4 5 6; 8 8 8]。
所有你需要的是一些連鎖和重塑。首先,沿着維2鏈接,然後轉置併線性化(AB(:)
),這樣就可以得到一個向量,其前三個元素是A的第一行,然後是B的第一行,然後是A的第二行等最後剩下的就是調用重塑將所有東西都放回到數組中。
nColumns = size(A,2);
AB = [A,B]';
AB = reshape(AB(:),nColumns,[])';
或者,您可以通過索引直接構建AB。在這種情況下,允許A比B多一行。這可能比上述更快。
[nRowsA,nCols] = size(A);
nRowsB = size(B,1);
AB = zeros(nRowsA+nRowsB,nCols);
AB(1:2:end,:) = A;
AB(2:2:end,:) = B;