【问题标题】:How to separate rows from a matrix?如何从矩阵中分离行?
【发布时间】:2015-04-22 17:27:41
【问题描述】:

我有一个大小为 16384 x 16 的非常大的矩阵。我需要从中获取一个 512 x 512 的矩阵。矩阵应按如下方式连接, 说 L 大小为 16384 x 16 的矩阵。默认情况下 L 排列如下

    L = [L1
         L2
         L3
         .
         .
         L32]. 

我需要得到 L 这样,G(即;新的 512x512 矩阵)

     G = [L1L2...L32]

这里每个 L 是一个 512x16 的矩阵。最初我尝试了一个 32x32 矩阵并正确获得了结果,但我无法为更大的矩阵做到这一点。我该怎么办?以下是我使用的代码

       W1 = 32;
       Ans1 = L(1:W1,:);
       Ans2 = L(W1+1:end,:);
       G = [Ans1,Ans2];

谢谢。

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    permute & reshape 的一种方法-

    cutlen = 512;  %// "Cut" after every cutlen rows
    G = reshape(permute(reshape(L,cutlen,[],size(L,2)),[1 3 2]),cutlen,[]);
    

    【讨论】:

    • 我可以知道为什么我们应该使用 [1 3 2] 和 size(L,2) 吗?
    • @Roshni191 好吧,size(L,2) 用于将输入数组重塑为 3D 数组,然后我们通过在 3 (dim-3) 和 @987654328 之间交换维度来置换(重新排列维度) @(行)。最后一步是重新整形为二维数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多