Reshape matrix with multiple columns into 2 columns

1 view (last 30 days)
Noticed that matlab has function of reshaping matrix into specific size, but is it possible to move 2 by 2 columns, for exapmle, 3 & 4th columns below 1 & 2nd columns, so far so on?
From A to B:
A = [1 2 3 4;5 6 7 8;9 10 11 12]
B = [1 2;5 6;9 10;3 4;7 8;11 12]
Thank you =]

Accepted Answer

KSSV
KSSV on 10 Mar 2022
A = [1 2 3 4;5 6 7 8;9 10 11 12]
B = [1 2;5 6;9 10;3 4;7 8;11 12]
iwant = [A(:,1:2) ; A(:,3:4)]
  1 Comment
lim xiang
lim xiang on 10 Mar 2022
Hi, thank you very much for your reply, realized that I can add a loop to group multiple columns of matrix

Sign in to comment.

More Answers (1)

Stephen23
Stephen23 on 10 Mar 2022
Edited: Stephen23 on 10 Mar 2022
Of course, here are two general solutions.
A = [1,2,3,4;5,6,7,8;9,10,11,12]
A = 3×4
1 2 3 4 5 6 7 8 9 10 11 12
B = [1,2;5,6;9,10;3,4;7,8;11,12] % desired output
B = 6×2
1 2 5 6 9 10 3 4 7 8 11 12
Method one: MAT2CELL and concatentation:
C = mat2cell(A,3,[2,2]);
B = vertcat(C{:})
B = 6×2
1 2 5 6 9 10 3 4 7 8 11 12
Method two: use RESHAPE and PERMUTE.
B = reshape(permute(reshape(A.',2,2,3),[1,3,2]),2,[]).'
B = 6×2
1 2 5 6 9 10 3 4 7 8 11 12
You do not need to use a loop!

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Tags

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!