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 个矩阵?的主要内容,如果未能解决你的问题,请参考以下文章

matlab中怎样把两个2维数组合并在一起

matlab 如何把三维矩阵拼接

2 个 AVX-512 向量元素的交错合并 - C 内在

如何将多个 Git 存储库合并为一个并交错历史

matlab的矩阵基础

matlab怎样合并元胞数组