matlab中的反向重塑

inverse reshape in matlab

我使用函数 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 函数的反函数。

谢谢。

我认为问题在于您将数组 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

稍微修改一下您的符号(您有 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