# n! permutation matrices

조회 수: 41(최근 30일)
Daniel Brower 2019년 12월 11일
답변: Bandar 2019년 12월 11일
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.

댓글을 달려면 로그인하십시오.

### 답변(4개)

JESUS DAVID ARIZA ROYETH 2019년 12월 11일
identity=eye(4);
total=perms(1:4);
for k=1:24
matrixperm=identity(total(k,:),:)
end
##### 댓글 수: 1표시숨기기 없음
Daniel Brower 2019년 12월 11일
How would I put each matrixperm in a cell or array?

댓글을 달려면 로그인하십시오.

Fabio Freschi 2019년 12월 11일
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 2019년 12월 11일
Is there a way to change the cells in B into matrices? I am not familiar with using cells.

댓글을 달려면 로그인하십시오.

Stephen23 2019년 12월 11일
편집: Stephen23 2019년 12월 11일
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표시숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Bandar 2019년 12월 11일
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

댓글을 달려면 로그인하십시오.

### 범주

Find more on Operators and Elementary Operations in Help Center and File Exchange

R2019b

### Community Treasure Hunt

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

Start Hunting!

Translated by