matlab - 如何合并/交错 2 个矩阵?
Posted
技术标签:
【中文标题】matlab - 如何合并/交错 2 个矩阵?【英文标题】:matlab - how to merge/interlace 2 matrices? 【发布时间】:2011-10-31 19:38:08 【问题描述】:如何将 2 个矩阵 A、B 合并为一个,以便新矩阵 C = A 的第 1 行,然后是 B 的第 1 行,然后是 A 的第 2 行,B 的第 2 行,A 的第 3 行,行3 的 B 等?最好没有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]。
【问题讨论】:
【参考方案1】:您所需要的只是一些连接和重塑。首先,沿着维度 2 连接,然后转置和线性化 (AB(:)
),这样就得到一个向量,其前三个元素是 A 的第一行,然后是 B 的第一行,然后是 A 的第二行等等。最后剩下的就是调用 reshape 将所有内容重新放入数组中。
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;
【讨论】:
以上是关于matlab - 如何合并/交错 2 个矩阵?的主要内容,如果未能解决你的问题,请参考以下文章