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

3 visualizzazioni (ultimi 30 giorni)
Grace
Grace il 14 Giu 2014
Commentato: Grace il 16 Giu 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 Commenti
Geoff Hayes
Geoff Hayes il 15 Giu 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 il 15 Giu 2014
Modificato: Grace il 15 Giu 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.

Accedi per commentare.

Risposte (1)

Roger Stafford
Roger Stafford il 15 Giu 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 Commento
Grace
Grace il 16 Giu 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)

Accedi per commentare.

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by