Public Types | Public Member Functions | List of all members
vnl_matrix_inverse< T > Struct Template Reference

Calculates inverse of a matrix (wrapper around vnl_svd<double>). More...

#include <vnl_algo_fwd.h>

Inheritance diagram for vnl_matrix_inverse< T >:
Inheritance graph
[legend]

Public Types

typedef vnl_numeric_traits< T >::abs_t singval_t
 The singular values of a matrix of complex<T> are of type T, not complex<T>. More...
 

Public Member Functions

 vnl_matrix_inverse (vnl_matrix< T > const &M)
 
 ~vnl_matrix_inverse () override=default
 
 operator vnl_matrix< T > () const
 
void zero_out_absolute (double tol=1e-8)
 find weights below threshold tol, zero them out, and update W_ and Winverse_. More...
 
void zero_out_relative (double tol=1e-8)
 find weights below tol*max(w) and zero them out. More...
 
int singularities () const
 
unsigned int rank () const
 
singval_t well_condition () const
 
singval_t determinant_magnitude () const
 Calculate determinant as product of diagonals in W. More...
 
singval_t norm () const
 
vnl_matrix< T > & U ()
 Return the matrix U. More...
 
vnl_matrix< T > const & U () const
 Return the matrix U. More...
 
U (int i, int j) const
 Return the matrix U's (i,j)th entry (to avoid svd.U()(i,j); ). More...
 
vnl_diag_matrix< singval_t > & W ()
 Get at DiagMatrix (q.v.) of singular values, sorted from largest to smallest. More...
 
vnl_diag_matrix< singval_t > const & W () const
 Get at DiagMatrix (q.v.) of singular values, sorted from largest to smallest. More...
 
singval_tW (int i, int j)
 
singval_tW (int i)
 
vnl_diag_matrix< singval_t > & Winverse ()
 
vnl_diag_matrix< singval_t > const & Winverse () const
 
singval_t sigma_max () const
 
singval_t sigma_min () const
 
vnl_matrix< T > & V ()
 Return the matrix V. More...
 
vnl_matrix< T > const & V () const
 Return the matrix V. More...
 
V (int i, int j) const
 Return the matrix V's (i,j)th entry (to avoid svd.V()(i,j); ). More...
 
vnl_matrix< T > inverse () const
 
vnl_matrix< T > pinverse (unsigned int rank=~0u) const
 pseudo-inverse (for non-square matrix) of desired rank. More...
 
vnl_matrix< T > tinverse (unsigned int rank=~0u) const
 Calculate inverse of transpose, using desired rank. More...
 
vnl_matrix< T > recompose (unsigned int rank=~0u) const
 Recompose SVD to U*W*V', using desired rank. More...
 
vnl_matrix< T > solve (vnl_matrix< T > const &B) const
 Solve the matrix equation M X = B, returning X. More...
 
vnl_vector< T > solve (vnl_vector< T > const &y) const
 Solve the matrix-vector system M x = y, returning x. More...
 
void solve (T const *rhs, T *lhs) const
 
void solve_preinverted (vnl_vector< T > const &rhs, vnl_vector< T > *out) const
 Solve the matrix-vector system M x = y. More...
 
vnl_matrix< T > nullspace () const
 Return N such that M * N = 0. More...
 
vnl_matrix< T > nullspace (int required_nullspace_dimension) const
 Return N such that M * N = 0. More...
 
vnl_matrix< T > left_nullspace () const
 Return N such that M' * N = 0. More...
 
vnl_matrix< T > left_nullspace (int required_nullspace_dimension) const
 Implementation to be done yet; currently returns left_nullspace(). - PVR. More...
 
vnl_vector< T > nullvector () const
 Return the rightmost column of V. More...
 
vnl_vector< T > left_nullvector () const
 Return the rightmost column of U. More...
 
bool valid () const
 

Detailed Description

template<class T>
struct vnl_matrix_inverse< T >

Calculates inverse of a matrix (wrapper around vnl_svd<double>).

vnl_matrix_inverse is a wrapper around vnl_svd<double> that allows you to write

This is exactly equivalent to

but is arguably clearer, and also allows for the vnl_matrix_inverse class to be changed to use vnl_qr, say.

Definition at line 6 of file vnl_algo_fwd.h.

Member Typedef Documentation

◆ singval_t

template<class T>
typedef vnl_numeric_traits<T>::abs_t vnl_svd< T >::singval_t
inherited

The singular values of a matrix of complex<T> are of type T, not complex<T>.

Definition at line 67 of file vnl_svd.h.

Constructor & Destructor Documentation

◆ vnl_matrix_inverse()

template<class T>
vnl_matrix_inverse< T >::vnl_matrix_inverse ( vnl_matrix< T > const &  M)
inline

Definition at line 34 of file vnl_matrix_inverse.h.

◆ ~vnl_matrix_inverse()

template<class T>
vnl_matrix_inverse< T >::~vnl_matrix_inverse ( )
overridedefault

Member Function Documentation

◆ determinant_magnitude()

template<class T >
vnl_svd< T >::singval_t vnl_svd< T >::determinant_magnitude ( ) const
inherited

Calculate determinant as product of diagonals in W.

Definition at line 213 of file vnl_svd.hxx.

◆ inverse()

template<class T>
vnl_matrix<T> vnl_svd< T >::inverse ( ) const
inlineinherited

Definition at line 133 of file vnl_svd.h.

◆ left_nullspace() [1/2]

template<class T >
vnl_matrix< T > vnl_svd< T >::left_nullspace ( ) const
inherited

Return N such that M' * N = 0.

Return N s.t. M' * N = 0.

Definition at line 384 of file vnl_svd.hxx.

◆ left_nullspace() [2/2]

template<class T >
vnl_matrix< T > vnl_svd< T >::left_nullspace ( int  required_nullspace_dimension) const
inherited

Implementation to be done yet; currently returns left_nullspace(). - PVR.

Todo:
Implementation to be done yet; currently returns left_nullspace().

- PVr.

Definition at line 395 of file vnl_svd.hxx.

◆ left_nullvector()

template<class T >
vnl_vector< T > vnl_svd< T >::left_nullvector ( ) const
inherited

Return the rightmost column of U.

Does not check to see whether or not the matrix actually was rank-deficient.

Definition at line 418 of file vnl_svd.hxx.

◆ norm()

template<class T >
vnl_svd< T >::singval_t vnl_svd< T >::norm ( ) const
inherited

Definition at line 226 of file vnl_svd.hxx.

◆ nullspace() [1/2]

template<class T >
vnl_matrix< T > vnl_svd< T >::nullspace ( ) const
inherited

Return N such that M * N = 0.

Return N s.t. M * N = 0.

Definition at line 365 of file vnl_svd.hxx.

◆ nullspace() [2/2]

template<class T >
vnl_matrix< T > vnl_svd< T >::nullspace ( int  required_nullspace_dimension) const
inherited

Return N such that M * N = 0.

Return N s.t. M * N = 0.

Definition at line 376 of file vnl_svd.hxx.

◆ nullvector()

template<class T >
vnl_vector< T > vnl_svd< T >::nullvector ( ) const
inherited

Return the rightmost column of V.

Does not check to see whether or not the matrix actually was rank-deficient - the caller is assumed to have examined W and decided that to his or her satisfaction.

Definition at line 406 of file vnl_svd.hxx.

◆ operator vnl_matrix< T >()

template<class T>
vnl_matrix_inverse< T >::operator vnl_matrix< T > ( ) const
inline

Definition at line 37 of file vnl_matrix_inverse.h.

◆ pinverse()

template<class T >
vnl_matrix< T > vnl_svd< T >::pinverse ( unsigned int  rank = ~0u) const
inherited

pseudo-inverse (for non-square matrix) of desired rank.

Calculate pseudo-inverse.

Definition at line 247 of file vnl_svd.hxx.

◆ rank()

template<class T>
unsigned int vnl_svd< T >::rank ( ) const
inlineinherited

Definition at line 95 of file vnl_svd.h.

◆ recompose()

template<class T >
vnl_matrix< T > vnl_svd< T >::recompose ( unsigned int  rank = ~0u) const
inherited

Recompose SVD to U*W*V', using desired rank.

Recompose SVD to U*W*V'.

Definition at line 233 of file vnl_svd.hxx.

◆ sigma_max()

template<class T>
singval_t vnl_svd< T >::sigma_max ( ) const
inlineinherited

Definition at line 120 of file vnl_svd.h.

◆ sigma_min()

template<class T>
singval_t vnl_svd< T >::sigma_min ( ) const
inlineinherited

Definition at line 121 of file vnl_svd.h.

◆ singularities()

template<class T>
int vnl_svd< T >::singularities ( ) const
inlineinherited

Definition at line 94 of file vnl_svd.h.

◆ solve() [1/3]

template<class T>
vnl_matrix< T > vnl_svd< T >::solve ( vnl_matrix< T > const &  B) const
inherited

Solve the matrix equation M X = B, returning X.

Definition at line 275 of file vnl_svd.hxx.

◆ solve() [2/3]

template<class T>
vnl_vector< T > vnl_svd< T >::solve ( vnl_vector< T > const &  y) const
inherited

Solve the matrix-vector system M x = y, returning x.

Definition at line 298 of file vnl_svd.hxx.

◆ solve() [3/3]

template<class T>
void vnl_svd< T >::solve ( T const *  rhs,
T *  lhs 
) const
inherited

Definition at line 337 of file vnl_svd.hxx.

◆ solve_preinverted()

template<class T>
void vnl_svd< T >::solve_preinverted ( vnl_vector< T > const &  y,
vnl_vector< T > *  x_out 
) const
inherited

Solve the matrix-vector system M x = y.

Assuming that the singular values W have been preinverted by the caller.

Assume that the singular values W have been preinverted by the caller.

Definition at line 345 of file vnl_svd.hxx.

◆ tinverse()

template<class T >
vnl_matrix< T > vnl_svd< T >::tinverse ( unsigned int  rank = ~0u) const
inherited

Calculate inverse of transpose, using desired rank.

Calculate (pseudo-)inverse of transpose.

Definition at line 261 of file vnl_svd.hxx.

◆ U() [1/3]

template<class T>
vnl_matrix<T>& vnl_svd< T >::U ( )
inlineinherited

Return the matrix U.

Definition at line 103 of file vnl_svd.h.

◆ U() [2/3]

template<class T>
vnl_matrix<T> const& vnl_svd< T >::U ( ) const
inlineinherited

Return the matrix U.

Definition at line 106 of file vnl_svd.h.

◆ U() [3/3]

template<class T>
T vnl_svd< T >::U ( int  i,
int  j 
) const
inlineinherited

Return the matrix U's (i,j)th entry (to avoid svd.U()(i,j); ).

Definition at line 109 of file vnl_svd.h.

◆ V() [1/3]

template<class T>
vnl_matrix<T>& vnl_svd< T >::V ( )
inlineinherited

Return the matrix V.

Definition at line 124 of file vnl_svd.h.

◆ V() [2/3]

template<class T>
vnl_matrix<T> const& vnl_svd< T >::V ( ) const
inlineinherited

Return the matrix V.

Definition at line 127 of file vnl_svd.h.

◆ V() [3/3]

template<class T>
T vnl_svd< T >::V ( int  i,
int  j 
) const
inlineinherited

Return the matrix V's (i,j)th entry (to avoid svd.V()(i,j); ).

Definition at line 130 of file vnl_svd.h.

◆ valid()

template<class T>
bool vnl_svd< T >::valid ( ) const
inlineinherited

Definition at line 176 of file vnl_svd.h.

◆ W() [1/4]

template<class T>
vnl_diag_matrix<singval_t>& vnl_svd< T >::W ( )
inlineinherited

Get at DiagMatrix (q.v.) of singular values, sorted from largest to smallest.

Definition at line 112 of file vnl_svd.h.

◆ W() [2/4]

template<class T>
vnl_diag_matrix<singval_t> const& vnl_svd< T >::W ( ) const
inlineinherited

Get at DiagMatrix (q.v.) of singular values, sorted from largest to smallest.

Definition at line 115 of file vnl_svd.h.

◆ W() [3/4]

template<class T>
singval_t& vnl_svd< T >::W ( int  i,
int  j 
)
inlineinherited

Definition at line 118 of file vnl_svd.h.

◆ W() [4/4]

template<class T>
singval_t& vnl_svd< T >::W ( int  i)
inlineinherited

Definition at line 119 of file vnl_svd.h.

◆ well_condition()

template<class T>
singval_t vnl_svd< T >::well_condition ( ) const
inlineinherited

Definition at line 96 of file vnl_svd.h.

◆ Winverse() [1/2]

template<class T>
vnl_diag_matrix<singval_t>& vnl_svd< T >::Winverse ( )
inlineinherited

Definition at line 116 of file vnl_svd.h.

◆ Winverse() [2/2]

template<class T>
vnl_diag_matrix<singval_t> const& vnl_svd< T >::Winverse ( ) const
inlineinherited

Definition at line 117 of file vnl_svd.h.

◆ zero_out_absolute()

template<class T >
void vnl_svd< T >::zero_out_absolute ( double  tol = 1e-8)
inherited

find weights below threshold tol, zero them out, and update W_ and Winverse_.

Definition at line 182 of file vnl_svd.hxx.

◆ zero_out_relative()

template<class T >
void vnl_svd< T >::zero_out_relative ( double  tol = 1e-8)
inherited

find weights below tol*max(w) and zero them out.

Definition at line 203 of file vnl_svd.hxx.


The documentation for this struct was generated from the following files: