2017-05-09 84 views
0

我需要将3D阵列s转换为2D阵列sReshape,其中第三维的每个切片将简单地放置在第一切片的2D阵列的行下方。MATLAB:将3D变换为2D(拼接)

这里的例子,以及预期的解决方案:

s = reshape((1:30),[5,3,2]); 
sReshape = ??? 

resultExpected = [(1:5),(16:20) ; (6:10),(21:25) ; (11:15),(26:30)]'; 
isequal(sReshape, resultExpected) 

回答

2

可以使用permute整形前的第二和第三尺寸之间切换:

s = reshape((1:30),[5,3,2]); 
% switch between the 2nd and third dimensions 
y = permute(s,[1 3 2]); 
% reshape into 3 columns matrix 
sReshape = reshape(y,[],3); 

resultExpected = [(1:5),(16:20) ; (6:10),(21:25) ; (11:15),(26:30)]'; 
isequal(sReshape, resultExpected) 
+0

这是完美的工作。谢谢! – Andi