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 = <float> - size: [2 3] Columns 1 to 3 -1.04076362 -1.61856449 0.55819988 0.24222484 -1.26936078 -2.91016126 --> [U,S,V] = svd(A) U = <float> - size: [2 2] Columns 1 to 2 0.029025711 0.999578655 0.999578655 -0.029025711 S = <float> - size: [2 3] Columns 1 to 3 3.1849895 0.0000000 0.0000000 0.0000000 2.0023384 0.0000000 V = <float> - size: [3 3] Columns 1 to 3 0.066535234 -0.523066461 0.849690914 -0.413127303 -0.789596081 -0.453722239 -0.908239424 0.320841968 0.268628925 --> U*S*V' ans = <float> - size: [2 3] Columns 1 to 3 -1.04076374 -1.61856449 0.55819982 0.24222499 -1.26936090 -2.91016126 --> svd(A) ans = <float> - size: [2 1] Columns 1 to 1 3.1849895 2.0023384