  # Matrix decomposition

matrix decomposition is a factorization of a matrix into some canonical form.

canonical form (often called normal or standard form) of an object is a standard way of presenting that object.

There are many different  decompositions; each one is used among a particular class of problems.

Matlab includes several functions for matrix decomposition or factorization.

LU decomposition: the name of the built-in function is 'lu'. To get the LU factorization of a square matrix M, type the command [L,U] = lu(M).

Matlab returns a lower triangular matrix L and an upper triangular matrix U such that L*U = M.

Example:

Type

M = [2 3 4 5
3 2 6 1
2 3 1 7
9 8 0 2];

[l, u] = lu(M)
l*u

Matlab answer is:

l =
0.2222    1.0000    0.4583    1.0000
0.3333   -0.5455    1.0000         0
0.2222    1.0000         0         0
1.0000         0         0         0

u =
9.0000    8.0000         0    2.0000
0    1.2222    1.0000    6.5556
0         0    6.5455    3.9091
0         0         0   -3.7917

ans =
2.0000    3.0000    4.0000    5.0000
3.0000    2.0000    6.0000    1.0000
2.0000    3.0000    1.0000    7.0000
9.0000    8.0000         0    2.0000

QR factorization: the name of the appropriate built-in function for this purpose is 'qr'. Typing the command [Q, R] = qr(M) returns an orthogonal matrix Q and an upper triangular matrix R such that Q*R = M.

Example (assuming the same matrix M as above):

Type

[q, r] = qr(M)
q*r

and the fast Matlab answer is:

q =
-0.2020    0.6359   -0.4469   -0.5959
-0.3030   -0.4127   -0.8144    0.2731
-0.2020    0.6359    0.0027    0.7449
-0.9091   -0.1450    0.3702   -0.1241

r =
-9.8995   -9.0914   -2.8284   -4.5457
0    1.8295    0.7028    6.9274
0         0   -6.6713   -2.2896
0         0         0    2.2595

ans =
2.0000    3.0000    4.0000    5.0000
3.0000    2.0000    6.0000    1.0000
2.0000    3.0000    1.0000    7.0000
9.0000    8.0000   -0.0000    2.0000

Cholesky decomposition: if you have a positive definite matrix A, you can factorize the matrix with the built-in function 'chol'. The command R = chol(A); produces an upper triangular matrix R such that R'*R = A for a positive definite A.

This is a brief reminder of what a positive definite matrix is:

An n by n matrix M is positive definite if

xT Mx > 0 for all x <> 0 and

xT Mx = 0 implies x = 0

If matrix M is symmetric, diagonally dominant, and has positive diagonal elements, then M is positive definite

If matrix M is positive definite, then M is diagonally dominant and has positive diagonal elements.

Example:

Type

M = [1     1     1     1
1     2     3     4
1     3     6    10
1     4    10    20];

r = chol(M)
r'*r

and the Matlab answer is:

r =
1     1     1     1
0     1     2     3
0     0     1     3
0     0     0     1

ans =
1     1     1     1
1     2     3     4
1     3     6    10
1     4    10    20

Singular value decomposition (svd): this is another type of matrix decomposition and the name of the built-in function is svd. Typing [U,S,V] = svd(M); produces a diagonal matrix S, of the same dimension as M and with nonnegative diagonal elements in decreasing order, and unitary matrices U and V so that M = U*S*V'.

Example (considering the same matrix M as above):

Type

[u, s, v] = svd(M)
u*s*v'

and you get:

u =
-0.0602   -0.5304    0.7873   -0.3087
-0.2012   -0.6403   -0.1632    0.7231
-0.4581   -0.3918   -0.5321   -0.5946
-0.8638    0.3939    0.2654    0.1684

s =
26.3047         0         0         0
0    2.2034         0         0
0         0    0.4538         0
0         0         0    0.0380

v =
-0.0602   -0.5304    0.7873   -0.3087
-0.2012   -0.6403   -0.1632    0.7231
-0.4581   -0.3918   -0.5321   -0.5946
-0.8638    0.3939    0.2654    0.1684

ans =
1.0000    1.0000    1.0000    1.0000
1.0000    2.0000    3.0000    4.0000
1.0000    3.0000    6.0000   10.0000
1.0000    4.0000   10.0000   20.0000

From 'Matrix Decomposition' to home

From 'Matrix Decomposition' to 'Matlab Cookbook I'

Table of Contents 