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