svd_matrix T_svd_matrix SvdMatrix SvdMatrix svd_matrix (Operator)
Name
svd_matrix T_svd_matrix SvdMatrix SvdMatrix svd_matrix
— Compute the singular value decomposition of a matrix.
Signature
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
HMatrix HMatrix ::SvdMatrix (const wchar_t* SVDType , const wchar_t* ComputeSingularVectors , HMatrix* MatrixSID , HMatrix* MatrixVID ) const
(
Windows only)
Description
The operator svd_matrix svd_matrix SvdMatrix SvdMatrix SvdMatrix svd_matrix
computes a full or reduced singular
value decomposition (SVD) of the Matrix
defined by the
matrix handle MatrixID MatrixID MatrixID MatrixID matrixID matrix_id
. The operator returns the matrix
handle MatrixSID MatrixSID MatrixSID MatrixSID matrixSID matrix_sid
of the matrix MatrixS
with
singular values in descending order.
Optionally, the matrices MatrixU
with the left and
MatrixV
with the right singular vectors are computed and
the matrix handles MatrixUID MatrixUID MatrixUID MatrixUID matrixUID matrix_uid
and MatrixVID MatrixVID MatrixVID MatrixVID matrixVID matrix_vid
are
returned. Access to the elements of the matrices is possible e.g.,
with the operator get_full_matrix get_full_matrix GetFullMatrix GetFullMatrix GetFullMatrix get_full_matrix
. The SVD is written
For SVDType SVDType SVDType SVDType SVDType svdtype
= 'full' "full" "full" "full" "full" "full" , a full SVD is computed.
Example:
SVDType SVDType SVDType SVDType SVDType svdtype
= 'full' "full" "full" "full" "full" "full" ,
ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors computeSingularVectors compute_singular_vectors
= 'both' "both" "both" "both" "both" "both"
For SVDType SVDType SVDType SVDType SVDType svdtype
= 'reduced' "reduced" "reduced" "reduced" "reduced" "reduced" , a reduced SVD is
computed.
Example:
SVDType SVDType SVDType SVDType SVDType svdtype
= 'reduced' "reduced" "reduced" "reduced" "reduced" "reduced" ,
ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors computeSingularVectors compute_singular_vectors
= 'both' "both" "both" "both" "both" "both"
For ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors computeSingularVectors compute_singular_vectors
= 'left' "left" "left" "left" "left" "left" , the matrix
MatrixU
with the left singular vectors is computed. For
ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors computeSingularVectors compute_singular_vectors
= 'right' "right" "right" "right" "right" "right" , the matrix
MatrixV
with the right singular vectors is computed. For
ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors computeSingularVectors compute_singular_vectors
= 'both' "both" "both" "both" "both" "both" , the matrices
MatrixU
and MatrixV
with the left and right
singular vectors are computed.
For ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors computeSingularVectors compute_singular_vectors
= 'none' "none" "none" "none" "none" "none" , no matrices
with the singular vectors are computed. The matrix
MatrixS
is a matrix with n rows and one column, where
the number n = min(number of rows of the input Matrix
,
number of columns of the input Matrix
).
Example:
SVDType SVDType SVDType SVDType SVDType svdtype
= 'reduced' "reduced" "reduced" "reduced" "reduced" "reduced" or 'full' "full" "full" "full" "full" "full" ,
ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors computeSingularVectors compute_singular_vectors
= 'none' "none" "none" "none" "none" "none"
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.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Processed without parallelization.
Parameters
MatrixID MatrixID MatrixID MatrixID matrixID matrix_id
(input_control) matrix →
HMatrix , HTuple HHandle HTuple Htuple (handle) (IntPtr ) (HHandle ) (handle )
Matrix handle of the input matrix.
SVDType SVDType SVDType SVDType SVDType svdtype
(input_control) string →
HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Type of computation.
Default:
'full'
"full"
"full"
"full"
"full"
"full"
List of values:
'full' "full" "full" "full" "full" "full" , 'reduced' "reduced" "reduced" "reduced" "reduced" "reduced"
ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors ComputeSingularVectors computeSingularVectors compute_singular_vectors
(input_control) string →
HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Computation of singular values.
Default:
'both'
"both"
"both"
"both"
"both"
"both"
List of values:
'both' "both" "both" "both" "both" "both" , 'left' "left" "left" "left" "left" "left" , 'none' "none" "none" "none" "none" "none" , 'right' "right" "right" "right" "right" "right"
MatrixUID MatrixUID MatrixUID MatrixUID matrixUID matrix_uid
(output_control) matrix →
HMatrix , HTuple HHandle HTuple Htuple (handle) (IntPtr ) (HHandle ) (handle )
Matrix handle with the left singular vectors.
MatrixSID MatrixSID MatrixSID MatrixSID matrixSID matrix_sid
(output_control) matrix →
HMatrix , HTuple HHandle HTuple Htuple (handle) (IntPtr ) (HHandle ) (handle )
Matrix handle with singular values.
MatrixVID MatrixVID MatrixVID MatrixVID matrixVID matrix_vid
(output_control) matrix →
HMatrix , HTuple HHandle HTuple Htuple (handle) (IntPtr ) (HHandle ) (handle )
Matrix handle with the right singular vectors.
Result
If the parameters are valid, the operator svd_matrix svd_matrix SvdMatrix SvdMatrix SvdMatrix svd_matrix
returns
the value 2 (
H_MSG_TRUE )
. If necessary, an exception is raised.
Possible Predecessors
create_matrix create_matrix CreateMatrix CreateMatrix CreateMatrix create_matrix
Possible Successors
get_full_matrix get_full_matrix GetFullMatrix GetFullMatrix GetFullMatrix get_full_matrix
,
get_value_matrix get_value_matrix GetValueMatrix GetValueMatrix GetValueMatrix get_value_matrix
References
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.
Module
Foundation