Class ComplexSVD
- All Implemented Interfaces:
Decomposition<CMatrix>
Instances of this class can be used to compute the singular value decomposition (SVD) of a
complex dense matrix
.
That is, decompose a rectangular matrix M as M=USVH where U and V are unitary matrices whose columns are the left and right singular vectors of M and S is a real rectangular diagonal matrix containing the singular values of M.
-
Field Summary
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a decomposer to compute the singular value decomposition of a real matrix.ComplexSVD
(boolean computeUV) Creates a decomposer to compute the Schur decomposition.ComplexSVD
(boolean computeUV, boolean reduced) Creates a decomposer to compute the singular value decomposition of a real matrix. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
extractNormalizedCols
(CMatrix singularVecs, int j) Extracts the singular vectors, normalizes them and sets the columns of U and V to be the left/right singular vectors.protected void
Initializes the unitary U and V matrices for the SVD.protected CMatrix
invDirectSum
(CMatrix src) Computes the inverse direct sum of a matrix and its Hermitian transpose.protected CMatrix
makeEigenPairs
(CMatrix B, double[] eigVals) Gets the eigen values and vectors of symmetric the block matrix which corresponds to the singular values and vectors of the matrix being decomposed.protected void
makeEigenVals
(CMatrix B, double[] eigVals) Gets the eigen values of the symmetric block matrix which corresponds to the singular values of the matrix being decomposed.Methods inherited from class org.flag4j.linalg.decompositions.svd.SVD
computeRank, decompose, getRank, getS, getSingularValues, getU, getV
-
Constructor Details
-
ComplexSVD
public ComplexSVD()Creates a decomposer to compute the singular value decomposition of a real matrix. The left and right singular vectors will be computed. -
ComplexSVD
public ComplexSVD(boolean computeUV) Creates a decomposer to compute the Schur decomposition.- Parameters:
computeUV
- A flag which indicates if the unitary matrices Q and V should be computed (i.e. the singular vectors). By default, this is true.
- If true, the Q and V matrices will be computed.
- If false, the Q and V matrices will not be computed. If it is not needed, this may provide a performance improvement.
-
ComplexSVD
public ComplexSVD(boolean computeUV, boolean reduced) Creates a decomposer to compute the singular value decomposition of a real matrix.- Parameters:
computeUV
- A flag which indicates if the orthogonal matrices Q and V should be computed (i.e. the singular vectors). By default, this is true.
- If true, the Q and V matrices will be computed.
- If false, the Q and V matrices will not be computed. If they are not needed, this may provide a performance improvement.reduced
- Flag which indicates if the reduced (or full) SVD should be computed. This is false by default.
- If true, reduced SVD is computed. - If false, the full SVD is computed.
-
-
Method Details
-
invDirectSum
Computes the inverse direct sum of a matrix and its Hermitian transpose.- Specified by:
invDirectSum
in classSVD<CMatrix>
- Parameters:
src
- Matrix to inverse direct add with its Hermitian transpose.- Returns:
- The inverse direct sum of the
src
matrix with its Hermitian transpose.
-
makeEigenPairs
Gets the eigen values and vectors of symmetric the block matrix which corresponds to the singular values and vectors of the matrix being decomposed.- Specified by:
makeEigenPairs
in classSVD<CMatrix>
- Parameters:
B
- Symmetric block matrix to compute the eigenvalues of.eigVals
- Storage for eigenvalues.- Returns:
- The eigenvalues and eigenvectors of the symmetric block matrix which corresponds to the singular values and vectors of the matrix being decomposed.
-
makeEigenVals
Gets the eigen values of the symmetric block matrix which corresponds to the singular values of the matrix being decomposed.- Specified by:
makeEigenVals
in classSVD<CMatrix>
- Parameters:
B
- Symmetric block matrix to compute the eigenvalues of.eigVals
- Storage for eigenvalues.
-
initUV
-
extractNormalizedCols
Extracts the singular vectors, normalizes them and sets the columns of U and V to be the left/right singular vectors.- Specified by:
extractNormalizedCols
in classSVD<CMatrix>
- Parameters:
singularVecs
- Computed left and right singular vectors.j
- Index of the column of U and V to set.
-