Section: Transforms/Decompositions
svd function has three forms. The first returns only the singular
values of the matrix:
s = svd(A)
The second form returns both the singular values in a diagonal
matrix S, as well as the left and right eigenvectors.
[U,S,V] = svd(A)
The third form returns a more compact decomposition, with the left and right singular vectors corresponding to zero singular values being eliminated. The syntax is
[U,S,V] = svd(A,0)
sigma_i is a singular value of an M x N
matrix A if there exists two vectors u_i, v_i where u_i is
of length M, and v_i is of length u_i and
and generally
where K is the rank of A. In matrix form, the left singular
vectors u_i are stored in the matrix U as
The matrix S is then of size M x N with the singular
values along the diagonal. The SVD is computed using the
LAPACK class of functions GESDD.
--> A = float(randn(2,3))
A =
0.8958 0.6486 -1.7291
-0.4528 -0.4949 -1.3478
--> [U,S,V] = svd(A)
U =
-0.8714 -0.4906
-0.4906 0.8714
S =
2.2618 0 0
0 1.1678 0
V =
-0.2469 -0.7142 0.6550
-0.1425 -0.6418 -0.7535
0.9585 -0.2794 0.0567
--> U*S*V'
ans =
0.8958 0.6486 -1.7291
-0.4528 -0.4949 -1.3478
--> svd(A)
ans =
2.2618
1.1678
-->
quit