【问题标题】:matlab - how to merge/interlace 2 matrices?matlab - 如何合并/交错 2 个矩阵?
【发布时间】: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]。

【问题讨论】:

    标签: matlab matrix concatenation


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      相关资源
      最近更新 更多