2017-05-09 4 views
0

Ich muss ein 3D-Array s in ein 2D-Array sReshape so transformieren, dass jedes Segment der dritten Dimension einfach unter die Zeilen des 2D-Arrays der ersten Schicht gelegt wird.MATLAB: Umwandlung von 3D in 2D (Verkettung)

Hier ist das Beispiel sowie die erwartete Lösung:

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

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

Antwort

2

Sie permute können zwischen der zweiten und dritten Dimension zu wechseln, bevor Umformung:

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

, die perfekt funktionieren. Vielen Dank! – Andi