X-Git-Url: http://gitweb.michael.orlitzky.com/?p=octave.git;a=blobdiff_plain;f=permutation_matrices.m;fp=permutation_matrices.m;h=9032d2e8eef5528355985d040133201a5421dea2;hp=0000000000000000000000000000000000000000;hb=23a3da45293aef5568409c8c1c46fc3b0758ca2d;hpb=8ca30867e869231f85848dc14e15f11e6d9c732b diff --git a/permutation_matrices.m b/permutation_matrices.m new file mode 100644 index 0000000..9032d2e --- /dev/null +++ b/permutation_matrices.m @@ -0,0 +1,31 @@ +function PMs = permutation_matrices(integerN) + ## Generate all permutation matrices of size ``integerN``. + ## + ## INPUT: + ## + ## - ``integerN`` -- The dimension of the resulting matrices. + ## + ## OUTPUT: + ## + ## - ``PMs`` -- A cell array of permutation matrices. + ## + + if (integerN < 1) + PMs = NA; + return; + end + + ## Append to this as we generate them. + PMs = {}; + + ## Generate all permutations of [1,2,...,integerN]. + permutations = perms([1:integerN]); + + for idx = [ 1 : factorial(integerN) ] + sigma = permutations(idx,:); + ## Create a permutation matrix from the permutation, sigma. + P = eye(integerN) (sigma,:); + PMs{end+1} = P; + end + +end