g2o
|
computing the marginal covariance given a cholesky factor (lower triangle of the factor) More...
#include <marginal_covariance_cholesky.h>
Public Member Functions | |
MarginalCovarianceCholesky () | |
~MarginalCovarianceCholesky () | |
void | computeCovariance (double **covBlocks, const std::vector< int > &blockIndices) |
void | computeCovariance (SparseBlockMatrix< MatrixXD > &spinv, const std::vector< int > &rowBlockIndices, const std::vector< std::pair< int, int > > &blockIndices) |
void | setCholeskyFactor (int n, int *Lp, int *Li, double *Lx, int *permInv) |
Protected Types | |
typedef std::unordered_map< int, double > | LookupMap |
Protected Member Functions | |
int | computeIndex (int r, int c) const |
compute the index used for hashing More... | |
double | computeEntry (int r, int c) |
Protected Attributes | |
int | _n |
L is an n X n matrix. More... | |
int * | _Ap |
column pointer of the CCS storage More... | |
int * | _Ai |
row indices of the CCS storage More... | |
double * | _Ax |
values of the cholesky factor More... | |
int * | _perm |
permutation of the cholesky factor. Variable re-ordering for better fill-in More... | |
LookupMap | _map |
hash look up table for the already computed entries More... | |
std::vector< double > | _diag |
cache 1 / H_ii to avoid recalculations More... | |
computing the marginal covariance given a cholesky factor (lower triangle of the factor)
Definition at line 45 of file marginal_covariance_cholesky.h.
|
protected |
hash struct for storing the matrix elements needed to compute the covariance
Definition at line 50 of file marginal_covariance_cholesky.h.
g2o::MarginalCovarianceCholesky::MarginalCovarianceCholesky | ( | ) |
Definition at line 45 of file marginal_covariance_cholesky.cpp.
g2o::MarginalCovarianceCholesky::~MarginalCovarianceCholesky | ( | ) |
Definition at line 50 of file marginal_covariance_cholesky.cpp.
void g2o::MarginalCovarianceCholesky::computeCovariance | ( | double ** | covBlocks, |
const std::vector< int > & | blockIndices | ||
) |
compute the marginal cov for the given block indices, write the result to the covBlocks memory (which has to be provided by the caller).
Definition at line 102 of file marginal_covariance_cholesky.cpp.
References _map, _perm, g2o::MatrixElem::c, computeEntry(), computeIndex(), and g2o::MatrixElem::r.
Referenced by g2o::LinearSolverCSparse< MatrixType >::solveBlocks(), g2o::LinearSolverCholmod< MatrixType >::solveBlocks(), g2o::LinearSolverCSparse< MatrixType >::solvePattern(), and g2o::LinearSolverCholmod< MatrixType >::solvePattern().
void g2o::MarginalCovarianceCholesky::computeCovariance | ( | SparseBlockMatrix< MatrixXD > & | spinv, |
const std::vector< int > & | rowBlockIndices, | ||
const std::vector< std::pair< int, int > > & | blockIndices | ||
) |
compute the marginal cov for the given block indices, write the result in spinv).
Definition at line 154 of file marginal_covariance_cholesky.cpp.
References _map, _perm, g2o::SparseBlockMatrix< MatrixType >::block(), g2o::MatrixElem::c, g2o::SparseBlockMatrix< MatrixType >::colBaseOfBlock(), computeEntry(), computeIndex(), g2o::MatrixElem::r, and g2o::SparseBlockMatrix< MatrixType >::rowBaseOfBlock().
|
protected |
compute one entry in the covariance, r and c are values after applying the permutation, and upper triangular. May issue recursive calls to itself to compute the missing values.
Definition at line 71 of file marginal_covariance_cholesky.cpp.
References _Ai, _Ap, _Ax, _diag, _map, and computeIndex().
Referenced by computeCovariance().
|
inlineprotected |
compute the index used for hashing
Definition at line 90 of file marginal_covariance_cholesky.h.
Referenced by computeCovariance(), and computeEntry().
void g2o::MarginalCovarianceCholesky::setCholeskyFactor | ( | int | n, |
int * | Lp, | ||
int * | Li, | ||
double * | Lx, | ||
int * | permInv | ||
) |
set the CCS representation of the cholesky factor along with the inverse permutation used to reduce the fill-in. permInv might be 0, will then not permute the entries.
The pointers provided by the user need to be still valid when calling computeCovariance(). The pointers are owned by the caller, MarginalCovarianceCholesky does not free the pointers.
Definition at line 54 of file marginal_covariance_cholesky.cpp.
References _Ai, _Ap, _Ax, _diag, _n, and _perm.
Referenced by g2o::LinearSolverCSparse< MatrixType >::solveBlocks(), g2o::LinearSolverCholmod< MatrixType >::solveBlocks(), g2o::LinearSolverCSparse< MatrixType >::solvePattern(), and g2o::LinearSolverCholmod< MatrixType >::solvePattern().
|
protected |
row indices of the CCS storage
Definition at line 82 of file marginal_covariance_cholesky.h.
Referenced by computeEntry(), and setCholeskyFactor().
|
protected |
column pointer of the CCS storage
Definition at line 81 of file marginal_covariance_cholesky.h.
Referenced by computeEntry(), and setCholeskyFactor().
|
protected |
values of the cholesky factor
Definition at line 83 of file marginal_covariance_cholesky.h.
Referenced by computeEntry(), and setCholeskyFactor().
|
protected |
cache 1 / H_ii to avoid recalculations
Definition at line 87 of file marginal_covariance_cholesky.h.
Referenced by computeEntry(), and setCholeskyFactor().
|
protected |
hash look up table for the already computed entries
Definition at line 86 of file marginal_covariance_cholesky.h.
Referenced by computeCovariance(), and computeEntry().
|
protected |
L is an n X n matrix.
Definition at line 80 of file marginal_covariance_cholesky.h.
Referenced by setCholeskyFactor().
|
protected |
permutation of the cholesky factor. Variable re-ordering for better fill-in
Definition at line 84 of file marginal_covariance_cholesky.h.
Referenced by computeCovariance(), and setCholeskyFactor().