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