g2o
Public Types | Public Member Functions | Protected Attributes | List of all members
g2o::SparseBlockMatrixHashMap< MatrixType > Class Template Reference

Sparse matrix which uses blocks based on hash structures. More...

#include <sparse_block_matrix_ccs.h>

Public Types

typedef MatrixType SparseMatrixBlock
 this is the type of the elementary block, it is an Eigen::Matrix. More...
 
typedef std::unordered_map< int, MatrixType * > SparseColumn
 

Public Member Functions

int cols () const
 columns of the matrix More...
 
int rows () const
 rows of the matrix More...
 
 SparseBlockMatrixHashMap (const std::vector< int > &rowIndices, const std::vector< int > &colIndices)
 
int rowsOfBlock (int r) const
 how many rows does the block at block-row r has? More...
 
int colsOfBlock (int c) const
 how many cols does the block at block-col c has? More...
 
int rowBaseOfBlock (int r) const
 where does the row at block-row r start? More...
 
int colBaseOfBlock (int c) const
 where does the col at block-col r start? More...
 
const std::vector< SparseColumn > & blockCols () const
 the block matrices per block-column More...
 
std::vector< SparseColumn > & blockCols ()
 
const std::vector< int > & rowBlockIndices () const
 indices of the row blocks More...
 
const std::vector< int > & colBlockIndices () const
 indices of the column blocks More...
 
MatrixType * addBlock (int r, int c, bool zeroBlock=false)
 

Protected Attributes

const std::vector< int > & _rowBlockIndices
 vector of the indices of the blocks along the rows. More...
 
const std::vector< int > & _colBlockIndices
 vector of the indices of the blocks along the cols More...
 
std::vector< SparseColumn_blockCols
 the matrices stored in CCS order More...
 

Detailed Description

template<class MatrixType>
class g2o::SparseBlockMatrixHashMap< MatrixType >

Sparse matrix which uses blocks based on hash structures.

This class is used to construct the pattern of a sparse block matrix

Definition at line 211 of file sparse_block_matrix_ccs.h.

Member Typedef Documentation

template<class MatrixType>
typedef std::unordered_map<int, MatrixType*> g2o::SparseBlockMatrixHashMap< MatrixType >::SparseColumn

Definition at line 222 of file sparse_block_matrix_ccs.h.

template<class MatrixType>
typedef MatrixType g2o::SparseBlockMatrixHashMap< MatrixType >::SparseMatrixBlock

this is the type of the elementary block, it is an Eigen::Matrix.

Definition at line 215 of file sparse_block_matrix_ccs.h.

Constructor & Destructor Documentation

template<class MatrixType>
g2o::SparseBlockMatrixHashMap< MatrixType >::SparseBlockMatrixHashMap ( const std::vector< int > &  rowIndices,
const std::vector< int > &  colIndices 
)
inline

Definition at line 224 of file sparse_block_matrix_ccs.h.

224  :
225  _rowBlockIndices(rowIndices), _colBlockIndices(colIndices)
226  {}
const std::vector< int > & _rowBlockIndices
vector of the indices of the blocks along the rows.
const std::vector< int > & _colBlockIndices
vector of the indices of the blocks along the cols

Member Function Documentation

template<class MatrixType>
MatrixType* g2o::SparseBlockMatrixHashMap< MatrixType >::addBlock ( int  r,
int  c,
bool  zeroBlock = false 
)
inline

add a block to the pattern, return a pointer to the added block

Definition at line 253 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_blockCols, g2o::SparseBlockMatrixCCS< MatrixType >::colsOfBlock(), and g2o::SparseBlockMatrixCCS< MatrixType >::rowsOfBlock().

Referenced by g2o::BlockSolver< Traits >::buildStructure().

254  {
255  assert(c <(int)_blockCols.size() && "accessing column which is not available");
256  SparseColumn& sparseColumn = _blockCols[c];
257  typename SparseColumn::iterator foundIt = sparseColumn.find(r);
258  if (foundIt == sparseColumn.end()) {
259  int rb = rowsOfBlock(r);
260  int cb = colsOfBlock(c);
261  MatrixType* m = new MatrixType(rb, cb);
262  if (zeroBlock)
263  m->setZero();
264  sparseColumn[r] = m;
265  return m;
266  }
267  return foundIt->second;
268  }
std::unordered_map< int, MatrixType * > SparseColumn
int rowsOfBlock(int r) const
how many rows does the block at block-row r has?
std::vector< SparseColumn > _blockCols
the matrices stored in CCS order
int colsOfBlock(int c) const
how many cols does the block at block-col c has?
template<class MatrixType>
const std::vector<SparseColumn>& g2o::SparseBlockMatrixHashMap< MatrixType >::blockCols ( ) const
inline

the block matrices per block-column

Definition at line 241 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_blockCols.

Referenced by g2o::BlockSolver< Traits >::buildStructure(), and g2o::SparseBlockMatrix< MatrixType >::takePatternFromHash().

241 { return _blockCols;}
std::vector< SparseColumn > _blockCols
the matrices stored in CCS order
template<class MatrixType>
std::vector<SparseColumn>& g2o::SparseBlockMatrixHashMap< MatrixType >::blockCols ( )
inline

Definition at line 242 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_blockCols.

242 { return _blockCols;}
std::vector< SparseColumn > _blockCols
the matrices stored in CCS order
template<class MatrixType>
int g2o::SparseBlockMatrixHashMap< MatrixType >::colBaseOfBlock ( int  c) const
inline

where does the col at block-col r start?

Definition at line 238 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_colBlockIndices.

238 { return c ? _colBlockIndices[c-1] : 0 ; }
const std::vector< int > & _colBlockIndices
vector of the indices of the blocks along the cols
template<class MatrixType>
const std::vector<int>& g2o::SparseBlockMatrixHashMap< MatrixType >::colBlockIndices ( ) const
inline

indices of the column blocks

Definition at line 248 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_colBlockIndices.

248 { return _colBlockIndices;}
const std::vector< int > & _colBlockIndices
vector of the indices of the blocks along the cols
template<class MatrixType>
int g2o::SparseBlockMatrixHashMap< MatrixType >::cols ( ) const
inline

columns of the matrix

Definition at line 218 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_colBlockIndices.

218 {return _colBlockIndices.size() ? _colBlockIndices.back() : 0;}
const std::vector< int > & _colBlockIndices
vector of the indices of the blocks along the cols
template<class MatrixType>
int g2o::SparseBlockMatrixHashMap< MatrixType >::colsOfBlock ( int  c) const
inline

how many cols does the block at block-col c has?

Definition at line 232 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_colBlockIndices.

232 { return c ? _colBlockIndices[c] - _colBlockIndices[c-1] : _colBlockIndices[0]; }
const std::vector< int > & _colBlockIndices
vector of the indices of the blocks along the cols
template<class MatrixType>
int g2o::SparseBlockMatrixHashMap< MatrixType >::rowBaseOfBlock ( int  r) const
inline

where does the row at block-row r start?

Definition at line 235 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_rowBlockIndices.

235 { return r ? _rowBlockIndices[r-1] : 0 ; }
const std::vector< int > & _rowBlockIndices
vector of the indices of the blocks along the rows.
template<class MatrixType>
const std::vector<int>& g2o::SparseBlockMatrixHashMap< MatrixType >::rowBlockIndices ( ) const
inline

indices of the row blocks

Definition at line 245 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_rowBlockIndices.

245 { return _rowBlockIndices;}
const std::vector< int > & _rowBlockIndices
vector of the indices of the blocks along the rows.
template<class MatrixType>
int g2o::SparseBlockMatrixHashMap< MatrixType >::rows ( ) const
inline

rows of the matrix

Definition at line 220 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_rowBlockIndices.

220 {return _rowBlockIndices.size() ? _rowBlockIndices.back() : 0;}
const std::vector< int > & _rowBlockIndices
vector of the indices of the blocks along the rows.
template<class MatrixType>
int g2o::SparseBlockMatrixHashMap< MatrixType >::rowsOfBlock ( int  r) const
inline

how many rows does the block at block-row r has?

Definition at line 229 of file sparse_block_matrix_ccs.h.

References g2o::SparseBlockMatrixCCS< MatrixType >::_rowBlockIndices.

229 { return r ? _rowBlockIndices[r] - _rowBlockIndices[r-1] : _rowBlockIndices[0] ; }
const std::vector< int > & _rowBlockIndices
vector of the indices of the blocks along the rows.

Member Data Documentation

template<class MatrixType>
std::vector<SparseColumn> g2o::SparseBlockMatrixHashMap< MatrixType >::_blockCols
protected

the matrices stored in CCS order

Definition at line 273 of file sparse_block_matrix_ccs.h.

template<class MatrixType>
const std::vector<int>& g2o::SparseBlockMatrixHashMap< MatrixType >::_colBlockIndices
protected

vector of the indices of the blocks along the cols

Definition at line 272 of file sparse_block_matrix_ccs.h.

template<class MatrixType>
const std::vector<int>& g2o::SparseBlockMatrixHashMap< MatrixType >::_rowBlockIndices
protected

vector of the indices of the blocks along the rows.

Definition at line 271 of file sparse_block_matrix_ccs.h.


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