For an m-by-n matrix A with m >= n, the singular value decomposition is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and an n-by-n orthogonal matrix V so that A = U*S*V'.
The singular values, sigma[k] = S[k][k], are ordered so that sigma[0] >= sigma[1] >= ... >= sigma[n-1].
The singular value decompostion always exists, so the constructor will never fail. The matrix condition number and the effective numerical rank can be computed from this decomposition.
The singular values, sigma[k] = S[k][k], are ordered so that sigma[0] >= sigma[1] >= ... >= sigma[n-1].
The singular value decomposition always exists, so the constructor will never fail. The matrix condition number and the effective numerical rank can be computed from this decomposition.
norm2
method which has been renamed as {@link #getNorm() getNorm},cond
method which has been renamed as {@link #getConditionNumber() getConditionNumber},rank
method which has been renamed as {@link #getRank() getRank}, This is an abstract class for computing the singular value decomposition (SVD) of a matrix, which is defined as:
The dimension of U,W,V depends if it is a compact SVD or not. If not compact then U is m by m, W is m by n, V is n by n. If compact then let s be the number of singular values, U is m by s, W is s by s, and V is n by s.
Accessor functions for decomposed matrices can return an internally constructed matrix if null is passed in for the optional storage parameter. The exact behavior is implementation specific. If an internally maintained matrix is returned then on the next call to decompose the matrix will be modified. The advantage of this approach is reduced memory overhead.
To create a new instance of SingularValueDecomposition see {@link DecompositionFactory#svd(int,int,boolean,boolean,boolean)}and {@link org.ejml.ops.SingularOps} contains additional helpful SVD related functions.
*Note* that the ordering of singular values is not guaranteed, unless done so by a specific implementation. The singular values can be put into descending order while adjusting U and V using {@link org.ejml.ops.SingularOps#descendingOrder(org.ejml.data.DenseMatrix64F,boolean,org.ejml.data.DenseMatrix64F,org.ejml.data.DenseMatrix64F,boolean)} SingularOps.descendingOrder()}.
@author Peter Abeles
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|