MATLAB Answers

n! permutation matrices

조회 수: 4(최근 30일)
Daniel Brower
Daniel Brower 11 Dec 2019
I need to generate 24 (4!) distict permutation 4x4 matrices. How would I do that?
The first one would need to be the identity matrix =
[1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1]
Each other would be variations of the identity matrix having different order of rows of the identity matrix. There would be exactly 24 (4!) different possible distict variations of the identity matrix, counting the identity matrix.

  댓글 수: 0

로그인 to comment.

답변 수 (4)

JESUS DAVID ARIZA ROYETH
identity=eye(4);
total=perms(1:4);
for k=1:24
matrixperm=identity(total(k,:),:)
end

  댓글 수: 1

Daniel Brower
Daniel Brower 11 Dec 2019
How would I put each matrixperm in a cell or array?

로그인 to comment.


Fabio Freschi
Fabio Freschi 11 Dec 2019
Is this what you wish?
% identity matrix
A = eye(4);
% permuatations
idx = perms(1:4);
% all matrices in a cell array
B = arrayfun(@(i)A(idx(i,:),:),1:24,'UniformOutput',false)

  댓글 수: 1

Daniel Brower
Daniel Brower 11 Dec 2019
Is there a way to change the cells in B into matrices? I am not familiar with using cells.

로그인 to comment.


Stephen Cobeldick
Stephen Cobeldick 11 Dec 2019
Stephen Cobeldick 님이 편집함. 11 Dec 2019
A purely numeric solution without loops:
>> I = eye(4);
>> M = reshape(I(:,flipud(perms(1:4)).'),4,4,24)
M =
ans(:,:,1) =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
ans(:,:,2) =
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
ans(:,:,3) =
1 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1
ans(:,:,4) =
1 0 0 0
0 0 0 1
0 1 0 0
0 0 1 0
ans(:,:,5) =
1 0 0 0
0 0 1 0
0 0 0 1
0 1 0 0
ans(:,:,6) =
1 0 0 0
0 0 0 1
0 0 1 0
0 1 0 0
... more here
ans(:,:,21) =
0 0 1 0
0 1 0 0
0 0 0 1
1 0 0 0
ans(:,:,22) =
0 0 0 1
0 1 0 0
0 0 1 0
1 0 0 0
ans(:,:,23) =
0 0 1 0
0 0 0 1
0 1 0 0
1 0 0 0
ans(:,:,24) =
0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0

  댓글 수: 0

로그인 to comment.


Bandar Aldhafeeri
Bandar Aldhafeeri 11 Dec 2019
You may consider creating multidemintional matrix as follows:
I=eye(4);
pr=perms(1:4);
A=zeros(4,4,24);
for i=1:24
A(:,:,i) = I(pr(i,:),:);
end
A

  댓글 수: 0

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.

제품


릴리스

R2019b

Translated by