From 23a3da45293aef5568409c8c1c46fc3b0758ca2d Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Mon, 25 Feb 2013 10:24:40 -0500 Subject: [PATCH] Add permutation_matrices() and its tests. --- permutation_matrices.m | 31 ++++++++++++++++++++++++++++++ tests/permutation_matrices_tests.m | 6 ++++++ 2 files changed, 37 insertions(+) create mode 100644 permutation_matrices.m create mode 100644 tests/permutation_matrices_tests.m 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 diff --git a/tests/permutation_matrices_tests.m b/tests/permutation_matrices_tests.m new file mode 100644 index 0000000..d65049e --- /dev/null +++ b/tests/permutation_matrices_tests.m @@ -0,0 +1,6 @@ +expected = { [1] }; +actual = permutation_matrices(1); + +unit_test_equals("permutation_matrices(1) works", ... + true, ... + isequal(actual,expected)); -- 2.43.2