MATLAB: How do i do Matrix reordering (cutting into blocks)

matrix reordering

Say i have a matrix
A=[1 5 9 13 17 21…..
2 6 10 14 18 22……
3 7 11 15 19 23
4 8 12 16 20 24 …….]
And want to bring that into this shape
A_=[1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
17 21 25 29
18 22 26 30
…………………]
Essentially cutting the above matrix into 4*4 and then continuing to the right and bring it down in to the new matrix.How do i do this?thank you

Best Answer

It's not exactly clear what the actual size of your matrix is (maybe you could clarify), but for what you have posted maybe this is what you want:
result = [A(:,1:4);A(:,5:8)];
EDIT:
Based on your comment below, it would be simpler to reshape the cell array first before you use cell2mat. E.g.,
A = [1 1 0 0 ; 1 1 1 0 ; 0 1 2 0; 1 0 0 1];
Q = cell2mat(arrayfun(@(i) A^i, (1:3)', 'Uni', false)); % transpose the 1:3