svd
Syntax
svd(obj, [fullMatrices=true], [computeUV=true])
Arguments
obj is a matrix.
fullMatrices is a Boolean value. The default value is true.
computeUV is a Boolean value. The default value is true.
Details
Perform the singular decomposition of a matrix.
Given an m-by-n matrix A:
If fullMatrices=true, return an m-by-m matrix U (unitary matrix having left singular vectors as columns), an n-by-n matrix V (unitary matrix having right singular vectors as rows) and a vector s (singular values sorted in descending order) such that A=U*S*V. S is an m-by-n matrix with s as the diagonal elements.
If fullMatrices=false, remove the extra rows or columns of zeros from matrix S, along with the columns/rows in U and V that multiply those zeros in the expression A = U*S*V. Removing these zeros and columns/rows can improve execution time and reduce storage requirements without compromising the accuracy of the decomposition. The resulting matrix U is m-by-k, matrix V is k-by-n and matrix S is k-by-k with k=min(m,n).
If computeUV=false, only return vector s.
Examples
$ m=matrix([[2,1,0],[1,3,1],[0,1,4],[1,2,3]]);
$ U,s,V=svd(m);
$ U;
#0 |
#1 |
#2 |
---|---|---|
-0.233976 |
0.57735 |
-0.782254 |
-0.560464 |
0.57735 |
0.593756 |
-0.79444 |
-0.57735 |
-0.188498 |
$ s;
[6.029042,3,1.284776]
$ V;
#0 |
#1 |
#2 |
#3 |
---|---|---|---|
-0.170577 |
-0.449459 |
-0.620036 |
-0.620036 |
0.57735 |
0.57735 |
-0.57735 |
0 |
-0.755582 |
0.630862 |
-0.12472 |
-0.12472 |
-0.258199 |
-0.258199 |
-0.516398 |
0.774597 |
$ U,s,V=svd(m,fullMatrices=false);
$ V;
#0 |
#1 |
#2 |
#3 |
---|---|---|---|
-0.170577 |
-0.449459 |
-0.620036 |
-0.620036 |
0.57735 |
0.57735 |
-0.57735 |
0 |
-0.755582 |
0.630862 |
-0.12472 |
-0.12472 |