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

2 Ansichten (letzte 30 Tage)
Grace
Grace am 14 Jun. 2014
Kommentiert: Grace am 16 Jun. 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 Kommentare
Geoff Hayes
Geoff Hayes am 15 Jun. 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 am 15 Jun. 2014
Bearbeitet: Grace am 15 Jun. 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.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Roger Stafford
Roger Stafford am 15 Jun. 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 Kommentar
Grace
Grace am 16 Jun. 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)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by