Name
svd_matrixsvd_matrixSvdMatrixSvdMatrix — Compute the singular value decomposition of a matrix.
Herror svd_matrix(const Hlong MatrixID, const char* SVDType, const char* ComputeSingularVectors, Hlong* MatrixUID, Hlong* MatrixSID, Hlong* MatrixVID)
Herror T_svd_matrix(const Htuple MatrixID, const Htuple SVDType, const Htuple ComputeSingularVectors, Htuple* MatrixUID, Htuple* MatrixSID, Htuple* MatrixVID)
void SvdMatrix(const HTuple& MatrixID, const HTuple& SVDType, const HTuple& ComputeSingularVectors, HTuple* MatrixUID, HTuple* MatrixSID, HTuple* MatrixVID)
HMatrix HMatrix::SvdMatrix(const HString& SVDType, const HString& ComputeSingularVectors, HMatrix* MatrixSID, HMatrix* MatrixVID) const
HMatrix HMatrix::SvdMatrix(const char* SVDType, const char* ComputeSingularVectors, HMatrix* MatrixSID, HMatrix* MatrixVID) const
The operator svd_matrixsvd_matrixSvdMatrixSvdMatrixSvdMatrix computes a full or reduced singular
value decomposition (SVD) of the MatrixMatrixMatrixMatrixmatrix defined by the
matrix handle MatrixIDMatrixIDMatrixIDMatrixIDmatrixID. The operator returns the matrix
handle MatrixSIDMatrixSIDMatrixSIDMatrixSIDmatrixSID of the matrix MatrixSMatrixSMatrixSMatrixSmatrixS with
singular values in descending order.
Optionally, the matrices MatrixUMatrixUMatrixUMatrixUmatrixU with the left and
MatrixVMatrixVMatrixVMatrixVmatrixV with the right singular vectors are computed and
the matrix handles MatrixUIDMatrixUIDMatrixUIDMatrixUIDmatrixUID and MatrixVIDMatrixVIDMatrixVIDMatrixVIDmatrixVID are
returned. Access to the elements of the matrices is possible e.g.
with the operator get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrix. The SVD is written
For SVDTypeSVDTypeSVDTypeSVDTypeSVDType = 'full'"full""full""full""full", a full SVD is computed.
Example:
For SVDTypeSVDTypeSVDTypeSVDTypeSVDType = 'reduced'"reduced""reduced""reduced""reduced", a reduced SVD is
computed.
Example:
For ComputeSingularVectorsComputeSingularVectorsComputeSingularVectorsComputeSingularVectorscomputeSingularVectors = 'left'"left""left""left""left", the matrix
MatrixUMatrixUMatrixUMatrixUmatrixU with the left singular vectors is computed. For
ComputeSingularVectorsComputeSingularVectorsComputeSingularVectorsComputeSingularVectorscomputeSingularVectors = 'right'"right""right""right""right", the matrix
MatrixVMatrixVMatrixVMatrixVmatrixV with the right singular vectors is computed. For
ComputeSingularVectorsComputeSingularVectorsComputeSingularVectorsComputeSingularVectorscomputeSingularVectors = 'both'"both""both""both""both", the matrices
MatrixUMatrixUMatrixUMatrixUmatrixU and MatrixVMatrixVMatrixVMatrixVmatrixV with the left and right
singular vectors are computed.
For ComputeSingularVectorsComputeSingularVectorsComputeSingularVectorsComputeSingularVectorscomputeSingularVectors = 'none'"none""none""none""none", no matrices
with the singular vectors are computed. The matrix
MatrixSMatrixSMatrixSMatrixSmatrixS is a matrix with n rows and one column, where
the number n = min(number of rows of the input MatrixMatrixMatrixMatrixmatrix,
number of columns of the input MatrixMatrixMatrixMatrixmatrix).
Example:
It should be noted that in the examples there are differences in the
meaning of the values of the output matrices: If a value is shown as
an integer number, e.g., 0 or 1, the value of this element is per
definition this certain value. If the number is shown as a floating
point number, e.g., 0.0 or 1.0, the value is computed by the
operator.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Matrix handle of the input matrix.
Type of computation.
Default value:
'full'
"full"
"full"
"full"
"full"
List of values: 'full'"full""full""full""full", 'reduced'"reduced""reduced""reduced""reduced"
Computation of singular values.
Default value:
'both'
"both"
"both"
"both"
"both"
List of values: 'both'"both""both""both""both", 'left'"left""left""left""left", 'none'"none""none""none""none", 'right'"right""right""right""right"
Matrix handle with the left singular vectors.
Matrix handle with singular values.
Matrix handle with the right singular vectors.
If the parameters are valid, the operator svd_matrixsvd_matrixSvdMatrixSvdMatrixSvdMatrix returns
the value 2 (H_MSG_TRUE). If necessary, an exception is raised.
create_matrixcreate_matrixCreateMatrixCreateMatrixCreateMatrix
get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrix,
get_value_matrixget_value_matrixGetValueMatrixGetValueMatrixGetValueMatrix
David Poole: “Linear Algebra: A Modern Introduction”; Thomson;
Belmont; 2006.
Gene H. Golub, Charles F. van Loan: “Matrix Computations”; The
Johns Hopkins University Press; Baltimore and London; 1996.
Foundation