SVD< MatrixType > Class Template Reference

Standard SVD decomposition of a matrix and associated features. More...

#include <SVD.h>

List of all members.

Public Member Functions

void compute (const MatrixType &matrix)
template<typename UnitaryType , typename PositiveType >
void computePositiveUnitary (UnitaryType *positive, PositiveType *unitary) const
template<typename PositiveType , typename UnitaryType >
void computePositiveUnitary (PositiveType *positive, UnitaryType *unitary) const
template<typename RotationType , typename ScalingType >
void computeRotationScaling (RotationType *unitary, ScalingType *positive) const
template<typename ScalingType , typename RotationType >
void computeScalingRotation (ScalingType *positive, RotationType *unitary) const
template<typename UnitaryType , typename PositiveType >
void computeUnitaryPositive (UnitaryType *unitary, PositiveType *positive) const
const MatrixUTypematrixU () const
const MatrixVTypematrixV () const
const SingularValuesTypesingularValues () const
template<typename OtherDerived , typename ResultType >
bool solve (const MatrixBase< OtherDerived > &b, ResultType *result) const
SVDsort ()
 SVD (const MatrixType &matrix)
 SVD ()

Protected Attributes

MatrixUType m_matU
MatrixVType m_matV
SingularValuesType m_sigma

Private Types

enum  { PacketSize = ei_packet_traits<Scalar>::size, AlignmentMask = int(PacketSize)-1, MinSize = EIGEN_SIZE_MIN(MatrixType::RowsAtCompileTime, MatrixType::ColsAtCompileTime) }
typedef Matrix< Scalar,
MatrixType::RowsAtCompileTime, 1 > 
ColVector
typedef Matrix< Scalar,
MatrixType::RowsAtCompileTime,
MinSize > 
MatrixUType
typedef Matrix< Scalar,
MatrixType::ColsAtCompileTime,
MatrixType::ColsAtCompileTime > 
MatrixVType
typedef NumTraits< typename
MatrixType::Scalar >::Real 
RealScalar
typedef Matrix< Scalar,
MatrixType::ColsAtCompileTime, 1 > 
RowVector
typedef MatrixType::Scalar Scalar
typedef Matrix< Scalar,
MinSize, 1 > 
SingularValuesType

Detailed Description

template<typename MatrixType>
class SVD< MatrixType >

Standard SVD decomposition of a matrix and associated features.

Parameters:
MatrixType the type of the matrix of which we are computing the SVD decomposition

This class performs a standard SVD decomposition of a real matrix A of size M x N with M >= N.

See also:
MatrixBase::SVD()

Definition at line 43 of file SVD.h.


Member Typedef Documentation

template<typename MatrixType>
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> SVD< MatrixType >::ColVector [private]

Definition at line 55 of file SVD.h.

template<typename MatrixType>
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, MinSize> SVD< MatrixType >::MatrixUType [private]

Definition at line 58 of file SVD.h.

template<typename MatrixType>
typedef Matrix<Scalar, MatrixType::ColsAtCompileTime, MatrixType::ColsAtCompileTime> SVD< MatrixType >::MatrixVType [private]

Definition at line 59 of file SVD.h.

template<typename MatrixType>
typedef NumTraits<typename MatrixType::Scalar>::Real SVD< MatrixType >::RealScalar [private]

Definition at line 47 of file SVD.h.

template<typename MatrixType>
typedef Matrix<Scalar, MatrixType::ColsAtCompileTime, 1> SVD< MatrixType >::RowVector [private]

Definition at line 56 of file SVD.h.

template<typename MatrixType>
typedef MatrixType::Scalar SVD< MatrixType >::Scalar [private]

Definition at line 46 of file SVD.h.

template<typename MatrixType>
typedef Matrix<Scalar, MinSize, 1> SVD< MatrixType >::SingularValuesType [private]

Definition at line 60 of file SVD.h.


Member Enumeration Documentation

template<typename MatrixType>
anonymous enum [private]
Enumerator:
PacketSize 
AlignmentMask 
MinSize 

Definition at line 49 of file SVD.h.


Constructor & Destructor Documentation

template<typename MatrixType>
SVD< MatrixType >::SVD (  )  [inline]

Definition at line 64 of file SVD.h.

template<typename MatrixType>
SVD< MatrixType >::SVD ( const MatrixType &  matrix  )  [inline]

Definition at line 66 of file SVD.h.


Member Function Documentation

template<typename MatrixType >
void SVD< MatrixType >::compute ( const MatrixType &  matrix  )  [inline]

Computes / recomputes the SVD decomposition A = U S V^* of matrix

Note:
this code has been adapted from JAMA (public domain)

Definition at line 107 of file SVD.h.

template<typename MatrixType>
template<typename UnitaryType , typename PositiveType >
void SVD< MatrixType >::computePositiveUnitary ( UnitaryType *  positive,
PositiveType *  unitary 
) const [inline]

Computes the polar decomposition of the matrix, as a product positive x unitary.

If either pointer is zero, the corresponding computation is skipped.

Only for square matrices.

See also:
computeUnitaryPositive(), computeRotationScaling()

Definition at line 578 of file SVD.h.

template<typename MatrixType>
template<typename PositiveType , typename UnitaryType >
void SVD< MatrixType >::computePositiveUnitary ( PositiveType *  positive,
UnitaryType *  unitary 
) const [inline]
template<typename MatrixType >
template<typename RotationType , typename ScalingType >
void SVD< MatrixType >::computeRotationScaling ( RotationType *  rotation,
ScalingType *  scaling 
) const [inline]

decomposes the matrix as a product rotation x scaling, the scaling being not necessarily positive.

If either pointer is zero, the corresponding computation is skipped.

This method requires the Geometry module.

See also:
computeScalingRotation(), computeUnitaryPositive()

Definition at line 597 of file SVD.h.

template<typename MatrixType >
template<typename ScalingType , typename RotationType >
void SVD< MatrixType >::computeScalingRotation ( ScalingType *  scaling,
RotationType *  rotation 
) const [inline]

decomposes the matrix as a product scaling x rotation, the scaling being not necessarily positive.

If either pointer is zero, the corresponding computation is skipped.

This method requires the Geometry module.

See also:
computeRotationScaling(), computeUnitaryPositive()

Definition at line 623 of file SVD.h.

template<typename MatrixType >
template<typename UnitaryType , typename PositiveType >
void SVD< MatrixType >::computeUnitaryPositive ( UnitaryType *  unitary,
PositiveType *  positive 
) const [inline]

Computes the polar decomposition of the matrix, as a product unitary x positive.

If either pointer is zero, the corresponding computation is skipped.

Only for square matrices.

See also:
computePositiveUnitary(), computeRotationScaling()

Definition at line 560 of file SVD.h.

template<typename MatrixType>
const MatrixUType& SVD< MatrixType >::matrixU (  )  const [inline]

Definition at line 77 of file SVD.h.

template<typename MatrixType>
const MatrixVType& SVD< MatrixType >::matrixV (  )  const [inline]

Definition at line 79 of file SVD.h.

template<typename MatrixType>
const SingularValuesType& SVD< MatrixType >::singularValues (  )  const [inline]

Definition at line 78 of file SVD.h.

template<typename MatrixType >
template<typename OtherDerived , typename ResultType >
bool SVD< MatrixType >::solve ( const MatrixBase< OtherDerived > &  b,
ResultType *  result 
) const [inline]
Returns:
the solution of $ A x = b $ using the current SVD decomposition of A. The parts of the solution corresponding to zero singular values are ignored.
See also:
MatrixBase::svd(), LU::solve(), LLT::solve()

Definition at line 526 of file SVD.h.

template<typename MatrixType >
SVD< MatrixType > & SVD< MatrixType >::sort (  )  [inline]

Definition at line 483 of file SVD.h.


Member Data Documentation

template<typename MatrixType>
MatrixUType SVD< MatrixType >::m_matU [protected]

Definition at line 95 of file SVD.h.

template<typename MatrixType>
MatrixVType SVD< MatrixType >::m_matV [protected]

Definition at line 97 of file SVD.h.

template<typename MatrixType>
SingularValuesType SVD< MatrixType >::m_sigma [protected]

Definition at line 99 of file SVD.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


vcglib
Author(s): Christian Bersch
autogenerated on Fri Jan 11 09:22:31 2013