【问题标题】:inverse reshape in matlabmatlab中的反向重塑
【发布时间】:2015-03-10 18:33:39
【问题描述】:

我使用了函数reshape() 来帮助将大小从 3D 矩阵更改为 2D 矩阵。例如:

a = [1 2; 3 4];
b = [5 6; 7 8];
c = cat(3,a,b);

这里c是3维矩阵。我使用reshape 来改变它:

[n,m,d] = size(c);
d = reshape(c, [n*m , d]);

d 的大小是 4x2。

这个操作之后,我如何从d取回c?我想知道的是reshape函数的反函数。

谢谢。

【问题讨论】:

    标签: matlab reshape


    【解决方案1】:

    稍微修改你的符号(你有 2 个d):

    a = [1 2; 3 4];
    b = [5 6; 7 8];
    c = cat(3,a,b);
    [n,m,d] = size(c);
    dd = reshape(c, [n*m , d]);
    cc = reshape(dd, [n, m , d]);
    

    您可以检查cc 是否等于c

    【讨论】:

      【解决方案2】:

      我认为问题在于您将数组d 的深度覆盖为重新整形的数组。试试:

      [n,m,p] = size(c);
      d = reshape(c, [n*m , p]);
      reshape(d,[n m p])
      

      结果:

      ans(:,:,1) =
      
           1     2
           3     4
      
      
      ans(:,:,2) =
      
           5     6
           7     8
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        • 1970-01-01
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        相关资源
        最近更新 更多