but*_*bat 10 matlab concatenation matrix
如何将2个矩阵A,B组合成一个,使新矩阵C = A的第1行,然后是B的第1行,然后是A的第2行,B的第2行,A的第3行,B的第3行等等?最好没有for循环?
例如: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].
Jon*_*nas 12
所有你需要的是一些catenation和重塑.首先,沿着维度2进行连接,然后进行转置和线性化(AB(:)
),这样就得到一个向量,其前三个元素是A的第一行,然后是B的第一行,然后是A的第二行,等等.最后剩下的就是调用reshape将所有内容重新放回到阵列中.
nColumns = size(A,2);
AB = [A,B]';
AB = reshape(AB(:),nColumns,[])';
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过索引直接构造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;
Run Code Online (Sandbox Code Playgroud)