TooN
Public Member Functions | List of all members
TooN::WLS< Size, Precision, Decomposition > Class Template Reference

Performs Gauss-Newton weighted least squares computation. More...

#include <wls.h>

Public Member Functions

 WLS (int size=0)
 Default constructor or construct with the number of dimensions for the Dynamic case.
 
void clear ()
 Clear all the measurements and apply a constant regularisation term.
 
void add_prior (Precision val)
 Applies a constant regularisation term. More...
 
template<class B2 >
void add_prior (const Vector< Size, Precision, B2 > &v)
 Applies a regularisation term with a different strength for each parameter value. More...
 
template<class B2 >
void add_prior (const Matrix< Size, Size, Precision, B2 > &m)
 Applies a whole-matrix regularisation term. More...
 
template<class B2 , class P2 >
void add_mJ (Precision m, const Vector< Size, P2, B2 > &J, Precision weight=1)
 Add a single measurement. More...
 
template<class VB , int S2, class B2 >
void add_mJ (const Vector< S2, Precision, VB > &m, const Matrix< S2, Size, Precision, B2 > &J, Precision weight=1)
 Add a several measurements measurement. More...
 
template<int N, class B1 , class B2 , class B3 >
void add_mJ (const Vector< N, Precision, B1 > &m, const Matrix< Size, N, Precision, B2 > &J, const Matrix< N, N, Precision, B3 > &invcov)
 Add multiple measurements at once (much more efficiently) More...
 
template<int N, class B1 , class B2 , class B3 >
void add_mJ_rows (const Vector< N, Precision, B1 > &m, const Matrix< N, Size, Precision, B2 > &J, const Matrix< N, N, Precision, B3 > &invcov)
 Add multiple measurements at once (much more efficiently) More...
 
template<int N, typename B1 >
void add_sparse_mJ (const Precision m, const Vector< N, Precision, B1 > &J1, const int index1, const Precision weight=1)
 Add a single measurement at once with a sparse Jacobian (much, much more efficiently) More...
 
template<int N, int S1, class P1 , class P2 , class P3 , class B1 , class B2 , class B3 >
void add_sparse_mJ_rows (const Vector< N, P1, B1 > &m, const Matrix< N, S1, P2, B2 > &J1, const int index1, const Matrix< N, N, P3, B3 > &invcov)
 Add multiple measurements at once with a sparse Jacobian (much, much more efficiently) More...
 
template<int N, int S1, int S2, class B1 , class B2 , class B3 , class B4 >
void add_sparse_mJ_rows (const Vector< N, Precision, B1 > &m, const Matrix< N, S1, Precision, B2 > &J1, const int index1, const Matrix< N, S2, Precision, B3 > &J2, const int index2, const Matrix< N, N, Precision, B4 > &invcov)
 Add multiple measurements at once with a sparse Jacobian (much, much more efficiently) More...
 
void compute ()
 Process all the measurements and compute the weighted least squares set of parameter values stores the result internally which can then be accessed by calling get_mu()
 
void operator+= (const WLS &meas)
 Combine measurements from two WLS systems. More...
 
Matrix< Size, Size, Precision > & get_C_inv ()
 Returns the inverse covariance matrix.
 
const Matrix< Size, Size, Precision > & get_C_inv () const
 Returns the inverse covariance matrix.
 
Vector< Size, Precision > & get_mu ()
 Returns the update. With no prior, this is the result of \(J^\dagger e\).
 
const Vector< Size, Precision > & get_mu () const
 Returns the update. With no prior, this is the result of \(J^\dagger e\).
 
Vector< Size, Precision > & get_vector ()
 Returns the vector \(J^{\mathsf T} e\).
 
const Vector< Size, Precision > & get_vector () const
 Returns the vector \(J^{\mathsf T} e\).
 
Decomposition< Size, Precision > & get_decomposition ()
 Return the decomposition object used to compute \((J^{\mathsf T} J + P)^{-1}\).
 
const Decomposition< Size, Precision > & get_decomposition () const
 Return the decomposition object used to compute \((J^{\mathsf T} J + P)^{-1}\).
 

Detailed Description

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
class TooN::WLS< Size, Precision, Decomposition >

Performs Gauss-Newton weighted least squares computation.

Parameters
SizeThe number of dimensions in the system
PrecisionThe numerical precision used (double, float etc)
DecompositionThe class used to invert the inverse Covariance matrix (must have one integer size and one typename precision template arguments) this is Cholesky by default, but could also be SQSVD

Member Function Documentation

◆ add_mJ() [1/3]

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<class B2 , class P2 >
void TooN::WLS< Size, Precision, Decomposition >::add_mJ ( Precision  m,
const Vector< Size, P2, B2 > &  J,
Precision  weight = 1 
)
inline

Add a single measurement.

Parameters
mThe value of the measurement
JThe Jacobian for the measurement \(\frac{\partial\text{m}}{\partial\text{param}_i}\)
weightThe inverse variance of the measurement (default = 1)

◆ add_mJ() [2/3]

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<class VB , int S2, class B2 >
void TooN::WLS< Size, Precision, Decomposition >::add_mJ ( const Vector< S2, Precision, VB > &  m,
const Matrix< S2, Size, Precision, B2 > &  J,
Precision  weight = 1 
)
inline

Add a several measurements measurement.

Parameters
mThe value of the measurement
JThe Jacobian for the measurement \(\frac{\partial\text{m}}{\partial\text{param}_i}\)
weightThe inverse variance of the measurement (default = 1)

◆ add_mJ() [3/3]

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<int N, class B1 , class B2 , class B3 >
void TooN::WLS< Size, Precision, Decomposition >::add_mJ ( const Vector< N, Precision, B1 > &  m,
const Matrix< Size, N, Precision, B2 > &  J,
const Matrix< N, N, Precision, B3 > &  invcov 
)
inline

Add multiple measurements at once (much more efficiently)

Parameters
mThe measurements to add
JThe Jacobian matrix \(\frac{\partial\text{m}_i}{\partial\text{param}_j}\)
invcovThe inverse covariance of the measurement values

◆ add_mJ_rows()

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<int N, class B1 , class B2 , class B3 >
void TooN::WLS< Size, Precision, Decomposition >::add_mJ_rows ( const Vector< N, Precision, B1 > &  m,
const Matrix< N, Size, Precision, B2 > &  J,
const Matrix< N, N, Precision, B3 > &  invcov 
)
inline

Add multiple measurements at once (much more efficiently)

Parameters
mThe measurements to add
JThe Jacobian matrix \(\frac{\partial\text{m}_i}{\partial\text{param}_j}\)
invcovThe inverse covariance of the measurement values

◆ add_prior() [1/3]

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
void TooN::WLS< Size, Precision, Decomposition >::add_prior ( Precision  val)
inline

Applies a constant regularisation term.

Equates to a prior that says all the parameters are zero with \(\sigma^2 = \frac{1}{\text{val}}\).

Parameters
valThe strength of the prior

◆ add_prior() [2/3]

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<class B2 >
void TooN::WLS< Size, Precision, Decomposition >::add_prior ( const Vector< Size, Precision, B2 > &  v)
inline

Applies a regularisation term with a different strength for each parameter value.

Equates to a prior that says all the parameters are zero with \(\sigma_i^2 = \frac{1}{\text{v}_i}\).

Parameters
vThe vector of priors

◆ add_prior() [3/3]

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<class B2 >
void TooN::WLS< Size, Precision, Decomposition >::add_prior ( const Matrix< Size, Size, Precision, B2 > &  m)
inline

Applies a whole-matrix regularisation term.

This is the same as adding the \(m\) to the inverse covariance matrix.

Parameters
mThe inverse covariance matrix to add

◆ add_sparse_mJ()

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<int N, typename B1 >
void TooN::WLS< Size, Precision, Decomposition >::add_sparse_mJ ( const Precision  m,
const Vector< N, Precision, B1 > &  J1,
const int  index1,
const Precision  weight = 1 
)
inline

Add a single measurement at once with a sparse Jacobian (much, much more efficiently)

Parameters
mThe measurements to add
J1The first block of the Jacobian matrix \(\frac{\partial\text{m}_i}{\partial\text{param}_j}\)
index1starting index for the first block
invcovThe inverse covariance of the measurement values

◆ add_sparse_mJ_rows() [1/2]

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<int N, int S1, class P1 , class P2 , class P3 , class B1 , class B2 , class B3 >
void TooN::WLS< Size, Precision, Decomposition >::add_sparse_mJ_rows ( const Vector< N, P1, B1 > &  m,
const Matrix< N, S1, P2, B2 > &  J1,
const int  index1,
const Matrix< N, N, P3, B3 > &  invcov 
)
inline

Add multiple measurements at once with a sparse Jacobian (much, much more efficiently)

Parameters
mThe measurements to add
J1The first block of the Jacobian matrix \(\frac{\partial\text{m}_i}{\partial\text{param}_j}\)
index1starting index for the first block
invcovThe inverse covariance of the measurement values

◆ add_sparse_mJ_rows() [2/2]

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
template<int N, int S1, int S2, class B1 , class B2 , class B3 , class B4 >
void TooN::WLS< Size, Precision, Decomposition >::add_sparse_mJ_rows ( const Vector< N, Precision, B1 > &  m,
const Matrix< N, S1, Precision, B2 > &  J1,
const int  index1,
const Matrix< N, S2, Precision, B3 > &  J2,
const int  index2,
const Matrix< N, N, Precision, B4 > &  invcov 
)
inline

Add multiple measurements at once with a sparse Jacobian (much, much more efficiently)

Parameters
mThe measurements to add
J1The first block of the Jacobian matrix \(\frac{\partial\text{m}_i}{\partial\text{param}_j}\)
index1starting index for the first block
J2The second block of the Jacobian matrix \(\frac{\partial\text{m}_i}{\partial\text{param}_j}\)
index2starting index for the second block
invcovThe inverse covariance of the measurement values

◆ operator+=()

template<int Size = Dynamic, class Precision = DefaultPrecision, template< int DecompSize, class DecompPrecision > class Decomposition = Cholesky>
void TooN::WLS< Size, Precision, Decomposition >::operator+= ( const WLS< Size, Precision, Decomposition > &  meas)
inline

Combine measurements from two WLS systems.

Parameters
measThe measurements to combine with

The documentation for this class was generated from the following file: