How to reshape a matrix (something that can't be done with reshape function)
1 view (last 30 days)
Show older comments
Kenta Watanabe
on 12 May 2021
Commented: Kenta Watanabe
on 12 May 2021
Let's say I have a matrix A:
A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
A =
1 4 7 10
2 5 8 11
3 6 9 12
and B = reshape(A,6,2) will return:
B =
1 7
2 8
3 9
4 10
5 11
6 12
But I'm wondering if there is any way to rearrange this matrix into something that looks like this:
B =
1 4
2 5
3 6
7 10
8 11
9 12
I'd like to know an easier way than doing:
B = [A(:,[1 2]) ; A(:,[3 4])]
Thank you in advance!
0 Comments
Accepted Answer
Stephen23
on 12 May 2021
Edited: Stephen23
on 12 May 2021
A = [1,4,7,10;2,5,8,11;3,6,9,12]
nmc = 2; % output number of columns
nmr = 3; % output number of rows per "group"
B = reshape(permute(reshape(A,nmr,nmc,[]),[1,3,2]),[],nmc)
2 Comments
Walter Roberson
on 12 May 2021
Which is to say that it can be done but it is by no means "easier" than extracting the two halves.
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!