【问题标题】:Reshaping a matrix重塑矩阵
【发布时间】:2014-12-18 12:20:25
【问题描述】:

我有一个看起来像这样的矩阵:

a=[1   1   2   2   3   3   4   4;
   1.5 1.5 2.5 2.5 3.5 3.5 4.5 4.5]

我想做的是重塑这个ie。

我想要的是将2x2 矩阵并排放置,并将它们放在彼此下方。

所以得到:

b=[1     1;
   1.5   1.5;
   2     2;
   2.5   2.5;
   3     3;
   3.5   3.5;
   4     4;
   4.5   4.5]

但我似乎无法操纵 reshape 函数为我执行此操作

【问题讨论】:

    标签: matlab matrix reshape


    【解决方案1】:

    编辑:单行版本可能有点复杂,所以我还添加了一个基于 for 循环的版本

    2 reshapes 和 permute 应该做到这一点(我们首先拆分矩阵并将它们存储在 3d 中),然后将它们堆叠起来。为了堆叠它们,我们首先需要置换维度(类似于转置)。

    >> reshape(permute(reshape(a,2,2,4),[1 3 2]),8,2)
    
    ans =
    
        1.0000    1.0000
        1.5000    1.5000
        2.0000    2.0000
        2.5000    2.5000
        3.0000    3.0000
        3.5000    3.5000
        4.0000    4.0000
        4.5000    4.5000
    

    基于 for 循环的版本更直接一些。我们创建一个正确大小的空数组,然后分别插入每个 2x2 矩阵:

    b=zeros(8,2);
    for i=1:4,
      b((2*i-1):(2*i),:) = a(:,(2*i-1):(2*i));
    end
    

    【讨论】:

    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多