n! permutation matrices

14 ビュー (過去 30 日間)
Daniel Brower
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
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
Daniel Brower 2019 年 12 月 11 日
How would I put each matrixperm in a cell or array?

サインインしてコメントする。


Fabio Freschi
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
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
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

Bandar
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

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by