Main MRPT website > C++ reference for MRPT 1.5.6
List of all members | Classes | Public Types | Public Member Functions | Private Attributes
mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL > Struct Template Reference

Detailed Description

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
struct mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >

A templated column-indexed efficient storage of block-sparse Jacobian or Hessian matrices, together with other arbitrary information.

Columns are stored in a non-associative container, but the contents of each column are kept within an std::map<> indexed by row. All submatrix blocks have the same size, which allows dense storage of them in fixed-size matrices, avoiding costly memory allocations.

Template Parameters
NROWSRows in each elementary matrix.
NCOLSCols in each elementary matrix.
INFOType of the extra data fields within each block
HAS_REMAPIs true, an inverse mapping between column indices and "user IDs" is kept.
INDEX_REMAP_MAP_IMPLIgnore if HAS_REMAP=false. Defaults to "mrpt::utils::map_as_vector<size_t,size_t>" for amortized O(1). Can be set to "std::map<size_t,size_t>" in very sparse systems to save memory at the cost of a O(log N) access time when using the remap indices.

Definition at line 41 of file MatrixBlockSparseCols.h.

#include <mrpt/math/MatrixBlockSparseCols.h>

Classes

struct  TEntry
 

Public Types

typedef Eigen::Matrix< Scalar, NROWS, NCOLS > matrix_t
 
typedef INFO symbolic_t
 
typedef mrpt::aligned_containers< size_t, TEntry >::map_t col_t
 Each compressed sparse column. More...
 

Public Member Functions

 MatrixBlockSparseCols ()
 
col_tgetCol (const size_t idx)
 
const col_tgetCol (const size_t idx) const
 
const mrpt::utils::map_as_vector< size_t, size_t > & getColInverseRemappedIndices () const
 
const std::vector< size_t > & getColRemappedIndices () const
 
col_tappendCol (const size_t remapIndex)
 Append one column, returning a ref to the new col_t data. More...
 
void setColCount (const size_t nCols)
 Change the number of columns (keep old contents) More...
 
size_t getColCount () const
 Get current number of cols. More...
 
void clearColEntries ()
 Clear all the entries in each column (do not change the number of columns, though!) More...
 
void clearAll ()
 Clear all the entries in each column (do not change the number of columns, though!) More...
 
void saveToTextFileAsDense (const std::string &filename, const bool force_symmetry=false, const bool is_col_compressed=true) const
 Builds a dense representation of the matrix and saves to a text file. More...
 
void getAsDense (mrpt::math::CMatrixDouble &D, const bool force_symmetry=false, const bool is_col_compressed=true) const
 Builds a dense representation of the matrix and saves to a text file. More...
 
size_t findCurrentNumberOfRows () const
 Goes over all the columns and keep the largest column length. More...
 
template<class MATRIX >
void getBinaryBlocksRepresentation (MATRIX &out) const
 Builds a binary matrix with 1s where an elementary matrix is stored, 0s elsewhere. More...
 
void copyNumericalValuesFrom (const MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP > &o)
 Clear the current contents of this objects and replicates the sparse structure and numerical values of o. More...
 

Private Attributes

std::deque< col_tcols
 -> cols[i]: i'th column. More...
 
mrpt::utils::map_as_vector< size_t, size_t > col_inverse_remapped_indices
 "remapped index" is the index of some global variable, interpreted by the external user of this class. More...
 
std::vector< size_t > col_remapped_indices
 

Member Typedef Documentation

◆ col_t

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
typedef mrpt::aligned_containers<size_t,TEntry>::map_t mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::col_t

Each compressed sparse column.

Definition at line 52 of file MatrixBlockSparseCols.h.

◆ matrix_t

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
typedef Eigen::Matrix<Scalar,NROWS,NCOLS> mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::matrix_t

Definition at line 43 of file MatrixBlockSparseCols.h.

◆ symbolic_t

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
typedef INFO mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::symbolic_t

Definition at line 44 of file MatrixBlockSparseCols.h.

Constructor & Destructor Documentation

◆ MatrixBlockSparseCols()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::MatrixBlockSparseCols ( )
inline

Definition at line 65 of file MatrixBlockSparseCols.h.

Member Function Documentation

◆ appendCol()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
col_t& mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::appendCol ( const size_t  remapIndex)
inline

◆ clearAll()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
void mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::clearAll ( )
inline

◆ clearColEntries()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
void mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::clearColEntries ( )
inline

Clear all the entries in each column (do not change the number of columns, though!)

See also
getColCount

Definition at line 96 of file MatrixBlockSparseCols.h.

References mrpt::utils::clear(), and mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::cols.

◆ copyNumericalValuesFrom()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
void mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::copyNumericalValuesFrom ( const MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP > &  o)
inline

Clear the current contents of this objects and replicates the sparse structure and numerical values of o.

Definition at line 177 of file MatrixBlockSparseCols.h.

References mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::cols.

◆ findCurrentNumberOfRows()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
size_t mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::findCurrentNumberOfRows ( ) const
inline

◆ getAsDense()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
void mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getAsDense ( mrpt::math::CMatrixDouble D,
const bool  force_symmetry = false,
const bool  is_col_compressed = true 
) const
inline

◆ getBinaryBlocksRepresentation()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
template<class MATRIX >
void mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getBinaryBlocksRepresentation ( MATRIX &  out) const
inline

◆ getCol() [1/2]

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
col_t& mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getCol ( const size_t  idx)
inline

◆ getCol() [2/2]

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
const col_t& mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getCol ( const size_t  idx) const
inline

◆ getColCount()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
size_t mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getColCount ( ) const
inline

◆ getColInverseRemappedIndices()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
const mrpt::utils::map_as_vector<size_t,size_t>& mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getColInverseRemappedIndices ( ) const
inline

◆ getColRemappedIndices()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
const std::vector<size_t>& mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getColRemappedIndices ( ) const
inline

◆ saveToTextFileAsDense()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
void mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::saveToTextFileAsDense ( const std::string filename,
const bool  force_symmetry = false,
const bool  is_col_compressed = true 
) const
inline

Builds a dense representation of the matrix and saves to a text file.

Definition at line 111 of file MatrixBlockSparseCols.h.

References mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getAsDense().

◆ setColCount()

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
void mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::setColCount ( const size_t  nCols)
inline

Change the number of columns (keep old contents)

Definition at line 90 of file MatrixBlockSparseCols.h.

References mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::cols.

Member Data Documentation

◆ col_inverse_remapped_indices

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
mrpt::utils::map_as_vector<size_t,size_t> mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::col_inverse_remapped_indices
private

◆ col_remapped_indices

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
std::vector<size_t> mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::col_remapped_indices
private

◆ cols

template<typename Scalar, int NROWS, int NCOLS, typename INFO, bool HAS_REMAP, typename INDEX_REMAP_MAP_IMPL = mrpt::utils::map_as_vector<size_t,size_t>>
std::deque<col_t> mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::cols
private



Page generated by Doxygen 1.8.14 for MRPT 1.5.6 Git: 4c65e8431 Tue Apr 24 08:18:17 2018 +0200 at lun oct 28 01:35:26 CET 2019