I have matrix nxn, A=[1 2 3 4;5 6 7 8; 9 10 11 12; 13 14 15 16]; I want to shuffle this matrix, which will give AB=[1 2 5 6; 3 4 7 8; 9 10 13 14; 11 12 15 16]. Any help will be highly appreciated

 Réponse acceptée

Stephen23
Stephen23 le 14 Jan 2018

0 votes

Here are two methods to rearrange it according to your question. Adjust to suit the size of your matrix.
>> A=[1 2 3 4;5 6 7 8; 9 10 11 12; 13 14 15 16]
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
>> cell2mat(reshape(cellfun(@(m)reshape(m.',2,2).',num2cell(A,2),'uni',0),2,2).')
ans =
1 2 5 6
3 4 7 8
9 10 13 14
11 12 15 16
>> reshape(permute(reshape(permute(reshape(A.',2,2,[]),[1,3,2]),4,2,[]),[1,3,2]),4,[]).'
ans =
1 2 5 6
3 4 7 8
9 10 13 14
11 12 15 16

1 commentaire

xia
xia le 17 Jan 2018
thank you, this is the answer I am looking for

Connectez-vous pour commenter.

Plus de réponses (1)

Roger Stafford
Roger Stafford le 14 Jan 2018

0 votes

AB = A;
AB(2,9,6,13,4,11,8,15) = AB(9,2,13,6,11,4,15,8);

3 commentaires

Jan
Jan le 14 Jan 2018
Insert square brackets for linear indexing, otherwise it accesses a n 8 dimensional array:
AB([2,9,6,13,4,11,8,15]) = AB([9,2,13,6,11,4,15,8]);
xia
xia le 14 Jan 2018
I mean how to change the position of some elements in matrix A to be like AB matrix. Based on some literature using shuffle operators, but only include examples as I have mentioned.
xia
xia le 17 Jan 2018
thank you for the answer

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by