Effacer les filtres
Effacer les filtres

Permute/Re​arrange/Sh​uffle the elements of a matrix

1 vue (au cours des 30 derniers jours)
Grace
Grace le 14 Juin 2014
Commenté : Grace le 16 Juin 2014
Hi, I have
A=[2 3
4 1
1 4
3 2
5 5];
I want have the all possible arrangements, with a condition,there is no repetition for each column.
How can I do this? Thanks in advance.
  2 commentaires
Geoff Hayes
Geoff Hayes le 15 Juin 2014
Grace - so you want all 5x2 matrices which have elements 1 through 5 in each column arranged uniquely? Or are the rows fixed and you want all arrangements of the rows? Please provide some of the arrangements from your above example or start with a smaller matrix to make it more clear what you expect.
Grace
Grace le 15 Juin 2014
Modifié(e) : Grace le 15 Juin 2014
Hi Geoff, yes, I want all 5x2 matrices have elements 1 through 5 in each column arranged uniquely.
Let's take a smaller matrix as an example:
B=[1 1;
2 2]
The matrix above contains 2 rows, the elements are 1 and 2.
The possible arrangements for B are
B1=[1 2;
2 1]
B2=[2 2;
1 1]
B3=[2 1;
1 2]
The arrangements like
[1 1;
1 2]
or
[1 2;
1 2]
which contain repeated elements for each column are not the arrangements that i wish to get.

Connectez-vous pour commenter.

Réponses (1)

Roger Stafford
Roger Stafford le 15 Juin 2014
With n = 5 rows in A you would get 14,400 different B matrices and that is too many to dream up names for, so I have put them all into a single n-by-2-by-(n!)^2 array which I call B. Each slice along the third dimension would be one of your n-by-2 matrices which you called B1, B2, B3, etc.
n = size(A,1);
P = perms(1:n)';
N = size(P,2);
B = zeros(n,2,N,N);
for i1 = 1:N
for i2 = 1:N
B(:,:,i1,i2) = [A(P(:,i1),1),A(P(:,i2),2)];
end
end
B = reshape(n,2,N^2);
  1 commentaire
Grace
Grace le 16 Juin 2014
Hi Roger, I can't understand the reshape part, and the output shows me:
>> Untitled
Error using reshape
To RESHAPE the number of elements must not
change.
Error in Untitled (line 42)
B = reshape(n,2,N^2)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Variables dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by