octave: Creating Permutation Matrices
21.1.2 Creating Permutation Matrices
------------------------------------
For creating permutation matrices, Octave does not introduce a new
function, but rather overrides an existing syntax: permutation matrices
can be conveniently created by indexing an identity matrix by
permutation vectors. That is, if Q is a permutation vector of length N,
the expression
P = eye (n) (:, q);
will create a permutation matrix - a special matrix object.
eye (n) (q, :)
will also work (and create a row permutation matrix), as well as
eye (n) (q1, q2).
For example:
eye (4) ([1,3,2,4],:)
⇒
Permutation Matrix
1 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1
eye (4) (:,[1,3,2,4])
⇒
Permutation Matrix
1 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1
Mathematically, an identity matrix is both diagonal and permutation
matrix. In Octave, ‘eye (n)’ returns a diagonal matrix, because a
matrix can only have one class. You can convert this diagonal matrix to
a permutation matrix by indexing it by an identity permutation, as shown
below. This is a special property of the identity matrix; indexing
other diagonal matrices generally produces a full matrix.
eye (3)
⇒
Diagonal Matrix
1 0 0
0 1 0
0 0 1
eye(3)(1:3,:)
⇒
Permutation Matrix
1 0 0
0 1 0
0 0 1
Some other built-in functions can also return permutation matrices.
Examples include “inv” or “lu”.