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

3 views (last 30 days)
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 Comments
Geoff Hayes
Geoff Hayes on 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 on 15 Jun 2014
Edited: Grace on 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.

Sign in to comment.

Answers (1)

Roger Stafford
Roger Stafford on 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 Comment
Grace
Grace on 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)

Sign in to comment.

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!