2017-05-09 74 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