BIAS::SVD Class Reference
[Algorithms]

computes and holds the singular value decomposition of a rectangular (not necessarily quadratic) Matrix A More...

#include <MathAlgo/SVD.hh>

Inheritance diagram for BIAS::SVD:

Inheritance graph
[legend]
Collaboration diagram for BIAS::SVD:

Collaboration graph
[legend]

List of all members.

Public Member Functions

const int AbsLeftNullspaceDim () const
 returns the dim of the matrix's left nullspace, using absolute threshold criterion
const int AbsNullspaceDim () const
 returns dim of nullspace using the absolute threshold criterion
const int AbsRightNullspaceDim () const
 returns the dim of the matrix's right nullspace, using absolute threshold criterion
void AddDebugLevel (const std::string &name)
void AddDebugLevel (const long int lv)
int compute (const Matrix< double > &M, double ZeroThreshold=DEFAULT_DOUBLE_ZERO_THRESHOLD)
 use our naming convention
int Compute (const Matrix< double > &M, double ZeroThreshold=DEFAULT_DOUBLE_ZERO_THRESHOLD)
 set a new matrix and compute its decomposition.
bool DebugLevelIsSet (const std::string &name) const
bool DebugLevelIsSet (const long int lv) const
int General_Eigenproblem_GeneralMatrix_Lapack (const Matrix< double > &M)
 solve the general (non-special) eigenvalue/eigenvector problem of a general (non-symmetric) matrix M calls the extern liblapack routine dgesvd .
int GetDebugLevel () const
void GetDebugStream (std::ostream &os) const
std::ostream & GetDebugStream () const
BIAS::Vector< double > GetEigenValues ()
 Call this after Compute(), returns the eigenvalues of the matrix in ascending order (smallest first), which are NOT the singular values! Works only, if the original Matrix was symmetric.
Vector< double > GetLeftNullvector (const int last_offset=0)
 same as above but returning vector
bool GetLeftNullvector (Vector< double > &nv, const int last_offset=0)
 Return one of the left nullvectors.
bool GetNullvector (Vector< double > &NullVec, const int last_offset=0)
 Returns one of the nullvectors in argument and true if Nullvector exists.
Vector< double > GetNullvector (const int last_offset=0)
 return one of the nullvectors.
const Vector< double > & GetS () const
 return S which is a vector of the singular values of A in descending order.
const double GetSingularValue (int index) const
 return one singular value (which may be zero).
const Matrix< double > & GetU () const
 return U U is a m x m orthogonal matrix
Matrix< double > GetV () const
 return V
const Matrix< double > & GetVT () const
 return VT (=transposed(V))
double GetZeroThreshold () const
 return zerothresh currently used
Matrix< double > Invert (Matrix< double > A)
 as above, but compute new svd for a
Matrix< double > Invert (int rank)
 returns pseudoinverse of A = U * S * V^T A^+ = V * S^+ * U^T the first "rank" elements of S are inverted the others are set to zero
Matrix< double > Invert ()
 returns pseudoinverse of A = U * S * V^T A^+ = V * S^+ * U^T
const int LeftNullspaceDim () const
 returns the dim of the matrix's left nullspace
long int Name2DebugLevel (const std::string &name) const
 looks up a debuglevel in the internal map, returns 0 if not found
long int NewDebugLevel (const std::string &name)
 creates a new debuglevel
const int NullspaceDim () const
 return the dim of the nullspace.
void PrintDebugLevel (std::ostream &os=std::cout) const
unsigned int Rank ()
 returns the rank of A_
const int RelLeftNullspaceDim () const
const int RelNullspaceDim () const
 compare singular values against greatest, not absolute
const int RelRightNullspaceDim () const
void RemoveDebugLevel (const std::string &name)
void RemoveDebugLevel (const long int lv)
const int RightNullspaceDim () const
 returns the dim of the matrix's right nullspace
void SetDebugLevel (const std::string &name)
void SetDebugLevel (const long int lv)
void SetDebugStream (const std::ostream &os)
void ShowDebugLevel (std::ostream &os=std::cout) const
 prints all internally known debuglevels
int size () const
 return the length of the singular value vector inline const int size() const
int Solve (Matrix< double > &A, Vector< double > &B, Vector< double > &X)
 solves the overdetermined linear system $AX=B$ with the unknown $X$, where $A$ is an $m x n$ matrix ($m>n$)and B is a vector of size $m$.
Vector< double > solve (const Vector< double > &y) const
 use our naming convention
Vector< double > Solve (const Vector< double > &y) const
Matrix< double > Sqrt (const Matrix< double > &A)
 as above, but compute new svd for a
Matrix< double > Sqrt ()
 returns the square root of a symmetric positive definite matrix M A = sqrt(M) = U * sqrt(S) * V_T, such that A*A = M.
Matrix< double > SqrtT (const Matrix< double > &A)
 as above, but compute new svd for a
Matrix< double > SqrtT ()
 returns the square root of a symmetric positive definite matrix M A = sqrt(M) = U * sqrt(S), such that A*A^T = M.
 SVD (bool AbsoluteZeroThreshold=true)
 creates an empty svd without automatically decomposing any matrix
 SVD (const Matrix< double > &M, double ZeroThreshold=DEFAULT_DOUBLE_ZERO_THRESHOLD, bool AbsoluteZeroThreshold=true)
 solve the general eigenproblem of the rectangular matrix M or with other words, make the U*S*V^T decomposition
virtual ~SVD ()

Static Public Member Functions

static long int GetGlobalDebugLevel ()
static void SetGlobalDebugLevel (long int lev)

Protected Member Functions

long ConsumeNextFreeDebuglevel_ ()
 returns the next available debuglevel

Protected Attributes

long int _liDebugLevel
long int _liNextDebugLevel
 new concept, debuglevel are managed here in the debug class
std::map< std::string, long int > _String2Debuglevel
Matrix< double > A_
 data members: original matrix (to be decomposed)
bool AbsoluteZeroThreshold_
 determines whether we compare singular-values directly (absolute) to the zero threshold or whether we compare the ratio of the sing-value under inspection and the largest one to the threshold (relative)
bool Decomposed_
 flag for holding decomposed matrix
Vector< double > S_
 contains the singular values of A_ corresponding to the i'th column in descending order.
Matrix< double > U_
 contains columnwise the left singular vectors of A_ corresponding to the i'th singular value
Matrix< double > VT_
 contains the right singular vectors of A- in rows [beause VT is transpose(V) ]
double ZeroThreshold_
 values below this threshold are treated as zero

Static Protected Attributes

static std::ostream _zDebugStream
static long int GlobalDebugLevel = 0


Detailed Description

computes and holds the singular value decomposition of a rectangular (not necessarily quadratic) Matrix A

M = U S V't.

The singular vectors vi and (right) singular values sigma_i satisfy the equation: A vi = sigma_i vi

The Vector S_ stores the singular values of A in decreasing order (smallest is last)

The columns of U are the left singular vectors of A and form an orthonormal basis of A which corresponds to the nonzero singular values. while the columns of U corresponding to (nearly) zero values are the nullspace.

This function is a base class and not a member in Matrix because:

You can create the svd object either in relative or in absolute mode: if AbsoluteZeroThreshold is true, a singular value is compared to the threshold "absolutely", otherwise the ratio of the largest and the current singular value is compared against the threshold. Usually you want AbsoluteZeroThreshold = false, but for the sake of interface stability/downwards compatibility, the default is true

Author:
Jan Woetzel

Definition at line 90 of file SVD.hh.


Constructor & Destructor Documentation

SVD::SVD ( const Matrix< double > &  M,
double  ZeroThreshold = DEFAULT_DOUBLE_ZERO_THRESHOLD,
bool  AbsoluteZeroThreshold = true 
)

solve the general eigenproblem of the rectangular matrix M or with other words, make the U*S*V^T decomposition

Parameters:
M matrix to decompose
ZeroThreshold for nullspace determination, if a singular value is lower than ZeroThreshold, define the corresponding vector in V^T to be a null-vector (also sing.vals are treated this way)
AbsoluteZeroThreshold if true, a singular value is compared to the threshold "absoultely", otherwise the ratio of the largest and the current singular value is compared against the threshold. Usually you want AbsoluteZeroThreshold = false, but for the sake of interface stability/downwards compatibility, the default is true
Author:
Jan Woetzel

Definition at line 40 of file SVD.cpp.

References AbsoluteZeroThreshold_, Compute(), and Decomposed_.

BIAS::SVD::SVD ( bool  AbsoluteZeroThreshold = true  )  [inline]

creates an empty svd without automatically decomposing any matrix

Parameters:
AbsoluteZeroThreshold if true, a singular value is compared to the threshold "absolutely", otherwise the ratio of the largest and the current singular value is compared against the threshold. Usually you want AbsoluteZeroThreshold = false, but for the sake of interface stability/downwards compatibility, the default is true

Definition at line 115 of file SVD.hh.

References DEFAULT_DOUBLE_ZERO_THRESHOLD.

virtual BIAS::SVD::~SVD (  )  [inline, virtual]

Definition at line 121 of file SVD.hh.


Member Function Documentation

const int SVD::AbsLeftNullspaceDim (  )  const

returns the dim of the matrix's left nullspace, using absolute threshold criterion

Author:
woelk 04 2003

Definition at line 380 of file SVD.cpp.

References A_, TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), S_, TNT::Vector< T >::size(), and ZeroThreshold_.

const int SVD::AbsNullspaceDim (  )  const

returns dim of nullspace using the absolute threshold criterion

For rectangular matrices this is the number of singular values which are (about) zero. The nullspace is spaned by the singular vectors corresponding to the zero singular values. woelk 4 2003: changed API, diffentiate between Left and Right Nullspace

Author:
Jan Woetzel 04/04/2002

Definition at line 328 of file SVD.cpp.

References A_, TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), S_, TNT::Vector< T >::size(), and ZeroThreshold_.

Referenced by AbsRightNullspaceDim().

const int SVD::AbsRightNullspaceDim (  )  const

returns the dim of the matrix's right nullspace, using absolute threshold criterion

Author:
woelk 04 2003

Definition at line 372 of file SVD.cpp.

References AbsNullspaceDim().

void BIAS::Debug::AddDebugLevel ( const std::string &  name  )  [inline, inherited]

Definition at line 354 of file Debug.hh.

void BIAS::Debug::AddDebugLevel ( const long int  lv  )  [inline, inherited]

int BIAS::SVD::compute ( const Matrix< double > &  M,
double  ZeroThreshold = DEFAULT_DOUBLE_ZERO_THRESHOLD 
) [inline]

use our naming convention

Definition at line 129 of file SVD.hh.

Referenced by BIAS::PMatrix::MakeSVD_().

int SVD::Compute ( const Matrix< double > &  M,
double  ZeroThreshold = DEFAULT_DOUBLE_ZERO_THRESHOLD 
)

set a new matrix and compute its decomposition.

solves the general eigenproblem of the rectangular matrix M

Author:
Jan Woetzel 05/142002)

Reimplemented in BIAS::SVD3x3.

Definition at line 48 of file SVD.cpp.

References Decomposed_, General_Eigenproblem_GeneralMatrix_Lapack(), and ZeroThreshold_.

Referenced by BIAS::CovMatrix3x3::_Decompose(), BIAS::ImageAlignment::Align(), BIAS::HMatrix::FactorizeAffineMatrixRLeft(), BIAS::HMatrix::FactorizeAffineMatrixRRight(), BIAS::EMatrix::GetRotationTranslation(), BIAS::Interpolator::InitSpline3(), Invert(), main(), Solve(), BIAS::LeastSquaresSVD::Solve(), Sqrt(), SqrtT(), and SVD().

long BIAS::Debug::ConsumeNextFreeDebuglevel_ (  )  [inline, protected, inherited]

returns the next available debuglevel

Author:
woelk 09/2006

Definition at line 513 of file Debug.hh.

References ABORT.

bool BIAS::Debug::DebugLevelIsSet ( const std::string &  name  )  const [inline, inherited]

Definition at line 342 of file Debug.hh.

bool BIAS::Debug::DebugLevelIsSet ( const long int  lv  )  const [inline, inherited]

Definition at line 333 of file Debug.hh.

Referenced by BIAS::GenSynthMatches::_AddUniformDistributedOutliers(), BIAS::CornerDetectorGradient< StorageType, CalculationType >::_CalcCornerness(), BIAS::GaussThreshold< InputStorageType, OutputStorageType >::_CalculateKernels(), BIAS::Gauss< InputStorageType, OutputStorageType >::_CalculateKernels(), BIAS::LinearRegionDetector< StorageType, CalculationType >::_ComputeCornerness(), BIAS::CornerDetectorKLT< StorageType, CalculationType >::_ComputeCornerness(), BIAS::GenSynthMatches::_CreateCamMovement(), BIAS::GenSynthMatches::_CreateStatic2DPoints(), BIAS::ImageBlender::BlendImages(), BIAS::StructureTensor< InputStorageType, OutputStorageType >::CalcStructureTensor(), BIAS::StructureTensor< InputStorageType, OutputStorageType >::CalcStructureTensor3x3(), BIAS::StructureTensor< InputStorageType, OutputStorageType >::CalcStructureTensor5x5(), BIAS::StructureTensor< InputStorageType, OutputStorageType >::CalcStructureTensor7x7(), BIAS::StructureTensor< InputStorageType, OutputStorageType >::CalcStructureTensorValid(), BIAS::UnscentedTransform::ComputeSigmaPoints_(), BIAS::Triangulation::CorrectCorrespondences(), BIAS::CornerDetectorGradient< StorageType, CalculationType >::Detect(), BIAS::Rescale< InputStorageType, OutputStorageType >::DownsampleBy2Color(), BIAS::Binomial< InputStorageType, OutputStorageType >::Filter3x3ValidGreyFloat(), BIAS::Binomial< InputStorageType, OutputStorageType >::Filter5x5ValidGreyFloat(), BIAS::Convolution< InputStorageType, OutputStorageType >::FilterFloat(), BIAS::Convolution< InputStorageType, OutputStorageType >::FilterInt(), BIAS::RANSAC< SolutionType >::GenerateSamplesRandom(), BIAS::GenSynthMatches::GetGTNormalizedF(), main(), BIAS::Tracker< StorageType, CalculationType >::PreparePyramide(), and BIAS::MonteCarloTransform::Transform().

int SVD::General_Eigenproblem_GeneralMatrix_Lapack ( const Matrix< double > &  M  ) 

solve the general (non-special) eigenvalue/eigenvector problem of a general (non-symmetric) matrix M calls the extern liblapack routine dgesvd .

computes the genral singular value decomposition with M = U * Sigma(S) * VT with Sigma(S) is the qudratic, symmetric matrix which contains the singular vales in the diagonal and zero and zero else. U, VT as described in the data mambers.

Author:
Jan Woetzel (04/04/2002)

Definition at line 56 of file SVD.cpp.

References A_, Decomposed_, General_singular_value_decomposition(), TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), res, S_, TNT::Vector< T >::size(), U_, and VT_.

Referenced by Compute().

int BIAS::Debug::GetDebugLevel (  )  const [inline, inherited]

void BIAS::Debug::GetDebugStream ( std::ostream &  os  )  const [inline, inherited]

Definition at line 406 of file Debug.hh.

std::ostream& BIAS::Debug::GetDebugStream (  )  const [inline, inherited]

BIAS::Vector< double > SVD::GetEigenValues (  ) 

Call this after Compute(), returns the eigenvalues of the matrix in ascending order (smallest first), which are NOT the singular values! Works only, if the original Matrix was symmetric.

Author:
grest, July 2006

Definition at line 486 of file SVD.cpp.

References A_, BIAS::Matrix< T >::GetRow(), BIAS::Matrix< T >::GetRows(), and VT_.

Referenced by BIAS::CamPoseCalib::SolveLM_().

static long int BIAS::Debug::GetGlobalDebugLevel (  )  [inline, static, inherited]

Vector< double > BIAS::SVD::GetLeftNullvector ( const int  last_offset = 0  )  [inline]

same as above but returning vector

Definition at line 419 of file SVD.hh.

References BIASERR, GetLeftNullvector(), TNT::Matrix< T >::num_rows(), and VT_.

bool BIAS::SVD::GetLeftNullvector ( Vector< double > &  nv,
const int  last_offset = 0 
) [inline]

Return one of the left nullvectors.

If last_offset=0 then the last nullvector (corresponding to the smallest singular value) is returned, if last_offset=1 then the last but one nullvector is returned, and so on. The last_offset must be in [0..NullspaceDim-1] otherwise 0 is returned

Author:
JMF/koeser

Definition at line 428 of file SVD.hh.

References BIASERR, TNT::Vector< T >::newsize(), NullspaceDim(), TNT::Matrix< T >::num_rows(), S_, U_, and VT_.

Referenced by BIAS::TrifocalTensor::ComputeEpipoles(), BIAS::TrifocalTensor::GetEpipolarLines(), BIAS::FMatrix::GetEpipoles(), and GetLeftNullvector().

bool BIAS::SVD::GetNullvector ( Vector< double > &  NullVec,
const int  last_offset = 0 
) [inline]

Returns one of the nullvectors in argument and true if Nullvector exists.

if last_offset=0 then the last nullvector (corresponding to the smallest singular value) is returned, if last_offset=1 then the last but one nullvector is returned, and so on. The last_offset must be in [0..NullspaceDim-1].

Author:
Jan Woetzel (08/08/2002), JMF

Definition at line 398 of file SVD.hh.

References TNT::Vector< T >::newsize(), NullspaceDim(), TNT::Matrix< T >::num_cols(), and VT_.

Vector< double > BIAS::SVD::GetNullvector ( const int  last_offset = 0  )  [inline]

return one of the nullvectors.

if last_offset=0 then the last nullvector (corresponding to the smallest singular value) is returned, if last_offset=1 then the last but one nullvector is returned, and so on. The last_offset must be in [0..NullspaceDim-1].

Author:
Jan Woetzel(08/08/2002), JMF

Definition at line 389 of file SVD.hh.

References TNT::Matrix< T >::num_cols(), and VT_.

Referenced by calc_Regressionsebene(), BIAS::TrifocalTensor::ComputeEpipoles(), BIAS::TrifocalTensor::GetEpipolarLines(), BIAS::FMatrix::GetEpipoles(), BIAS::PMatrix::GetNullVector(), BIAS::Conic2D::GetPoint(), BIAS::PlaneRANSAC::RefineSolution(), and BIAS::FMatrixEstimation::SevenPoint().

const Vector<double>& BIAS::SVD::GetS (  )  const [inline]

const double BIAS::SVD::GetSingularValue ( int  index  )  const [inline]

return one singular value (which may be zero).

inline implementations

the index runs from 0.. (size-1)

Author:
Jan Woetzel 04/04/2002

Definition at line 371 of file SVD.hh.

References BIASASSERT, S_, TNT::Vector< T >::size(), and size().

Referenced by BIAS::CamPoseCalib::outputPose_(), and RelLeftNullspaceDim().

const Matrix<double>& BIAS::SVD::GetU (  )  const [inline]

Matrix< double > BIAS::SVD::GetV (  )  const [inline]

return V

Author:
Jan Woetzel (04/04/2002)

Definition at line 381 of file SVD.hh.

References BIAS::Matrix< T >::Transpose(), and VT_.

Referenced by BIAS::Conic2D::GetDualConic(), BIAS::PMatrix::GetPseudoInverse(), Print(), and BIAS::Quadric3D::Quadric3D().

const Matrix<double>& BIAS::SVD::GetVT (  )  const [inline]

double BIAS::SVD::GetZeroThreshold (  )  const [inline]

return zerothresh currently used

Author:
koeser

Definition at line 147 of file SVD.hh.

Referenced by BIAS::PMatrixLinear::Compute().

Matrix< double > SVD::Invert ( Matrix< double >  A  ) 

as above, but compute new svd for a

Definition at line 181 of file SVD.cpp.

References Compute(), and Invert().

Matrix< double > SVD::Invert ( int  rank  ) 

returns pseudoinverse of A = U * S * V^T A^+ = V * S^+ * U^T the first "rank" elements of S are inverted the others are set to zero

Author:
Christian Beder

Definition at line 156 of file SVD.cpp.

References Decomposed_, TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), res, S_, BIAS::Matrix< T >::SetZero(), TNT::Vector< T >::size(), BIAS::Matrix< T >::Transpose(), U_, and VT_.

Matrix< double > SVD::Invert (  ) 

const int BIAS::SVD::LeftNullspaceDim (  )  const [inline]

returns the dim of the matrix's left nullspace

Author:
woelk 04 2003

Definition at line 210 of file SVD.hh.

long int BIAS::Debug::Name2DebugLevel ( const std::string &  name  )  const [inline, inherited]

looks up a debuglevel in the internal map, returns 0 if not found

Author:
woelk 09/2006

Definition at line 446 of file Debug.hh.

References it.

long int BIAS::Debug::NewDebugLevel ( const std::string &  name  )  [inline, inherited]

const int BIAS::SVD::NullspaceDim (  )  const [inline]

return the dim of the nullspace.

For rectangular matrices this is the number of singular values which are (about) zero. The nullspace is spaned by the singular vectors corresponding to the zero singular values. woelk 4 2003: changed API, diffentiate between Left and Right Nullspace koeser 01/2005: rel/abs handled by flag: AbsoluteZeroThreshold_ determines whther we compare absolute or relative singular values against the threshold

Author:
Jan Woetzel 04/04/2002

Definition at line 196 of file SVD.hh.

Referenced by BIAS::FMatrix::GetEpipoles(), GetLeftNullvector(), GetNullvector(), BIAS::FMatrix::IsValid(), main(), Rank(), and RelLeftNullspaceDim().

void BIAS::Debug::PrintDebugLevel ( std::ostream &  os = std::cout  )  const [inline, inherited]

Definition at line 375 of file Debug.hh.

References WS.

Referenced by main().

unsigned int SVD::Rank (  ) 

const int SVD::RelLeftNullspaceDim (  )  const

const int SVD::RelNullspaceDim (  )  const

compare singular values against greatest, not absolute

Author:
Christian Buck changed criterion for insignificant singular values according to hartley/zisserman from s_i<ZeroThreshold to s_i/s_0<ZeroThreshold. fallback to old criterion iff s_0=0.

Definition at line 346 of file SVD.cpp.

References A_, TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), S_, TNT::Vector< T >::size(), and ZeroThreshold_.

Referenced by BIAS::PMatrixLinear::Compute(), BIAS::Conic2D::GetDualConic(), and RelRightNullspaceDim().

const int SVD::RelRightNullspaceDim (  )  const

Definition at line 376 of file SVD.cpp.

References RelNullspaceDim().

void BIAS::Debug::RemoveDebugLevel ( const std::string &  name  )  [inline, inherited]

Definition at line 368 of file Debug.hh.

void BIAS::Debug::RemoveDebugLevel ( const long int  lv  )  [inline, inherited]

Definition at line 361 of file Debug.hh.

const int BIAS::SVD::RightNullspaceDim (  )  const [inline]

returns the dim of the matrix's right nullspace

Author:
woelk 04 2003

Definition at line 203 of file SVD.hh.

void BIAS::Debug::SetDebugLevel ( const std::string &  name  )  [inline, inherited]

Definition at line 317 of file Debug.hh.

void BIAS::Debug::SetDebugLevel ( const long int  lv  )  [inline, inherited]

void BIAS::Debug::SetDebugStream ( const std::ostream &  os  )  [inline, inherited]

Definition at line 390 of file Debug.hh.

Referenced by main().

static void BIAS::Debug::SetGlobalDebugLevel ( long int  lev  )  [inline, static, inherited]

Definition at line 416 of file Debug.hh.

Referenced by main().

void BIAS::Debug::ShowDebugLevel ( std::ostream &  os = std::cout  )  const [inline, inherited]

prints all internally known debuglevels

Author:
woelk 09/2006

Definition at line 488 of file Debug.hh.

References it.

Referenced by main().

int BIAS::SVD::size (  )  const [inline]

return the length of the singular value vector inline const int size() const

Definition at line 179 of file SVD.hh.

Referenced by GetSingularValue().

int SVD::Solve ( Matrix< double > &  A,
Vector< double > &  B,
Vector< double > &  X 
)

solves the overdetermined linear system $AX=B$ with the unknown $X$, where $A$ is an $m x n$ matrix ($m>n$)and B is a vector of size $m$.

Author:
woelk 07/2004

Definition at line 429 of file SVD.cpp.

References AbsoluteZeroThreshold_, BIASCDOUT, BIASDOUT, Compute(), D_SVD_SOLVE, GetS(), BIAS::Matrix< T >::GetSystemMatrix(), GetU(), GetVT(), TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), res, S_, BIAS::Matrix< T >::Transpose(), and ZeroThreshold_.

Vector<double> BIAS::SVD::solve ( const Vector< double > &  y  )  const [inline]

use our naming convention

Definition at line 280 of file SVD.hh.

Vector< double > SVD::Solve ( const Vector< double > &  y  )  const

Matrix< double > SVD::Sqrt ( const Matrix< double > &  A  ) 

as above, but compute new svd for a

Definition at line 250 of file SVD.cpp.

References Compute(), and Sqrt().

Matrix< double > SVD::Sqrt (  ) 

returns the square root of a symmetric positive definite matrix M A = sqrt(M) = U * sqrt(S) * V_T, such that A*A = M.

The result is only valid when the M *is* symmetric positive definite.

Author:
woelk 01/2006

Definition at line 189 of file SVD.cpp.

References A_, AbsoluteZeroThreshold_, BEXCEPTION, BIASERR, Compute(), Decomposed_, BIAS::Equal(), BIAS::Matrix< T >::GetCols(), BIAS::Matrix< T >::GetRows(), BIAS::GreaterEqual(), BIAS::MatrixZero, num, TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), r, res, S_, TNT::Vector< T >::size(), U_, Upper_symmetric_eigenvalue_solve(), VT_, and ZeroThreshold_.

Referenced by MatrixSqrt(), and Sqrt().

Matrix< double > SVD::SqrtT ( const Matrix< double > &  A  ) 

as above, but compute new svd for a

Definition at line 320 of file SVD.cpp.

References Compute(), and SqrtT().

Matrix< double > SVD::SqrtT (  ) 

returns the square root of a symmetric positive definite matrix M A = sqrt(M) = U * sqrt(S), such that A*A^T = M.

The result is only valid when the M *is* symmetric positive definite.

Author:
woelk 01/2006

Definition at line 257 of file SVD.cpp.

References A_, AbsoluteZeroThreshold_, BEXCEPTION, Compute(), Decomposed_, BIAS::Equal(), BIAS::Matrix< T >::GetCols(), BIAS::Matrix< T >::GetRows(), BIAS::GreaterEqual(), BIAS::MatrixZero, num, TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), r, S_, TNT::Vector< T >::size(), U_, Upper_symmetric_eigenvalue_solve(), VT_, and ZeroThreshold_.

Referenced by BIAS::UnscentedTransform::ComputeSigmaPoints_(), and SqrtT().


Member Data Documentation

long int BIAS::Debug::_liDebugLevel [protected, inherited]