How do i do Matrix reordering (cutting into blocks)?

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

 Akzeptierte Antwort

James Tursa
James Tursa am 8 Mai 2019
Bearbeitet: James Tursa am 8 Mai 2019
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

2 Kommentare

ManvsMachine
ManvsMachine am 8 Mai 2019
Bearbeitet: ManvsMachine am 8 Mai 2019
Actually what i am trying to do is
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));
size(Q)%4*12 matrix
instead of manually doing , i would like to have reshape or similar command shape this matrix. into
[A
A^2]
A^3]
format
Thankyou very much,appreciate your time

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by