在matlab中进行逆重整

时间:2015-03-10 18:33:40

标签: matlab reshape

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

完成此操作后,如何从c返回d?我想知道的是reshape函数的反函数。

谢谢。

2 个答案:

答案 0 :(得分:1)

我认为问题是你将数组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

答案 1 :(得分: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