Classes | Public Types | Public Member Functions | Protected Types | Protected Attributes

DynamicSparseMatrix< _Scalar, _Options, _Index > Class Template Reference

A sparse matrix class designed for matrix assembly purpose. More...

#include <DynamicSparseMatrix.h>

Inheritance diagram for DynamicSparseMatrix< _Scalar, _Options, _Index >:
SparseMatrixBase< DynamicSparseMatrix< _Scalar, _Options, _Index > > EigenBase< DynamicSparseMatrix< _Scalar, _Options, _Index > >

List of all members.

Classes

class  InnerIterator

Public Types

enum  { Options = _Options }
typedef MappedSparseMatrix
< Scalar, Flags > 
Map

Public Member Functions

Index rows () const
Index cols () const
Index innerSize () const
Index outerSize () const
Index innerNonZeros (Index j) const
std::vector< CompressedStorage
< Scalar, Index > > & 
_data ()
const std::vector
< CompressedStorage< Scalar,
Index > > & 
_data () const
Scalar coeff (Index row, Index col) const
ScalarcoeffRef (Index row, Index col)
void setZero ()
Index nonZeros () const
void reserve (Index reserveSize=1000)
void startVec (Index)
ScalarinsertBack (Index row, Index col)
ScalarinsertBackByOuterInner (Index outer, Index inner)
Scalarinsert (Index row, Index col)
void finalize ()
void prune (Scalar reference, RealScalar epsilon=NumTraits< RealScalar >::dummy_precision())
void resize (Index rows, Index cols)
void resizeAndKeepData (Index rows, Index cols)
 DynamicSparseMatrix ()
 DynamicSparseMatrix (Index rows, Index cols)
template<typename OtherDerived >
 DynamicSparseMatrix (const SparseMatrixBase< OtherDerived > &other)
 DynamicSparseMatrix (const DynamicSparseMatrix &other)
void swap (DynamicSparseMatrix &other)
DynamicSparseMatrixoperator= (const DynamicSparseMatrix &other)
 ~DynamicSparseMatrix ()
EIGEN_DEPRECATED void startFill (Index reserveSize=1000)
EIGEN_DEPRECATED Scalarfill (Index row, Index col)
EIGEN_DEPRECATED Scalarfillrand (Index row, Index col)
EIGEN_DEPRECATED void endFill ()

Protected Types

typedef DynamicSparseMatrix
< Scalar,(Flags &~RowMajorBit)|(IsRowMajor?RowMajorBit:0)> 
TransposedSparseMatrix

Protected Attributes

Index m_innerSize
std::vector< CompressedStorage
< Scalar, Index > > 
m_data

Detailed Description

template<typename _Scalar, int _Options, typename _Index>
class DynamicSparseMatrix< _Scalar, _Options, _Index >

A sparse matrix class designed for matrix assembly purpose.

Parameters:
_Scalar the scalar type, i.e. the type of the coefficients

Unlike SparseMatrix, this class provides a much higher degree of flexibility. In particular, it allows random read/write accesses in log(rho*outer_size) where rho is the probability that a coefficient is nonzero and outer_size is the number of columns if the matrix is column-major and the number of rows otherwise.

Internally, the data are stored as a std::vector of compressed vector. The performances of random writes might decrease as the number of nonzeros per inner-vector increase. In practice, we observed very good performance till about 100 nonzeros/vector, and the performance remains relatively good till 500 nonzeros/vectors.

See also:
SparseMatrix

Member Typedef Documentation

template<typename _Scalar, int _Options, typename _Index>
typedef MappedSparseMatrix<Scalar,Flags> DynamicSparseMatrix< _Scalar, _Options, _Index >::Map
template<typename _Scalar, int _Options, typename _Index>
typedef DynamicSparseMatrix<Scalar,(Flags&~RowMajorBit)|(IsRowMajor?RowMajorBit:0)> DynamicSparseMatrix< _Scalar, _Options, _Index >::TransposedSparseMatrix [protected]

Member Enumeration Documentation

template<typename _Scalar, int _Options, typename _Index>
anonymous enum
Enumerator:
Options 

Constructor & Destructor Documentation

template<typename _Scalar, int _Options, typename _Index>
DynamicSparseMatrix< _Scalar, _Options, _Index >::DynamicSparseMatrix (  )  [inline]
template<typename _Scalar, int _Options, typename _Index>
DynamicSparseMatrix< _Scalar, _Options, _Index >::DynamicSparseMatrix ( Index  rows,
Index  cols 
) [inline]
template<typename _Scalar, int _Options, typename _Index>
template<typename OtherDerived >
DynamicSparseMatrix< _Scalar, _Options, _Index >::DynamicSparseMatrix ( const SparseMatrixBase< OtherDerived > &  other  )  [inline, explicit]
template<typename _Scalar, int _Options, typename _Index>
DynamicSparseMatrix< _Scalar, _Options, _Index >::DynamicSparseMatrix ( const DynamicSparseMatrix< _Scalar, _Options, _Index > &  other  )  [inline]
template<typename _Scalar, int _Options, typename _Index>
DynamicSparseMatrix< _Scalar, _Options, _Index >::~DynamicSparseMatrix (  )  [inline]

Destructor


Member Function Documentation

template<typename _Scalar, int _Options, typename _Index>
std::vector<CompressedStorage<Scalar,Index> >& DynamicSparseMatrix< _Scalar, _Options, _Index >::_data (  )  [inline]
template<typename _Scalar, int _Options, typename _Index>
const std::vector<CompressedStorage<Scalar,Index> >& DynamicSparseMatrix< _Scalar, _Options, _Index >::_data (  )  const [inline]
template<typename _Scalar, int _Options, typename _Index>
Scalar DynamicSparseMatrix< _Scalar, _Options, _Index >::coeff ( Index  row,
Index  col 
) const [inline]
Returns:
the coefficient value at given position row, col This operation involes a log(rho*outer_size) binary search.
template<typename _Scalar, int _Options, typename _Index>
Scalar& DynamicSparseMatrix< _Scalar, _Options, _Index >::coeffRef ( Index  row,
Index  col 
) [inline]
Returns:
a reference to the coefficient value at given position row, col This operation involes a log(rho*outer_size) binary search. If the coefficient does not exist yet, then a sorted insertion into a sequential buffer is performed.
template<typename _Scalar, int _Options, typename _Index>
Index DynamicSparseMatrix< _Scalar, _Options, _Index >::cols ( void   )  const [inline]
Returns:
the number of columns.
See also:
rows(), ColsAtCompileTime

Reimplemented from SparseMatrixBase< DynamicSparseMatrix< _Scalar, _Options, _Index > >.

template<typename _Scalar, int _Options, typename _Index>
EIGEN_DEPRECATED void DynamicSparseMatrix< _Scalar, _Options, _Index >::endFill (  )  [inline]
Deprecated:
use finalize() Does nothing. Provided for compatibility with SparseMatrix.
template<typename _Scalar, int _Options, typename _Index>
EIGEN_DEPRECATED Scalar& DynamicSparseMatrix< _Scalar, _Options, _Index >::fill ( Index  row,
Index  col 
) [inline]
Deprecated:
use insert() inserts a nonzero coefficient at given coordinates row, col and returns its reference assuming that: 1 - the coefficient does not exist yet 2 - this the coefficient with greater inner coordinate for the given outer coordinate. In other words, assuming *this is column-major, then there must not exists any nonzero coefficient of coordinates i x col such that i >= row. Otherwise the matrix is invalid.
See also:
fillrand(), coeffRef()
template<typename _Scalar, int _Options, typename _Index>
EIGEN_DEPRECATED Scalar& DynamicSparseMatrix< _Scalar, _Options, _Index >::fillrand ( Index  row,
Index  col 
) [inline]
Deprecated:
use insert() Like fill() but with random inner coordinates. Compared to the generic coeffRef(), the unique limitation is that we assume the coefficient does not exist yet.
template<typename _Scalar, int _Options, typename _Index>
void DynamicSparseMatrix< _Scalar, _Options, _Index >::finalize (  )  [inline]

Does nothing: provided for compatibility with SparseMatrix

template<typename _Scalar, int _Options, typename _Index>
Index DynamicSparseMatrix< _Scalar, _Options, _Index >::innerNonZeros ( Index  j  )  const [inline]
template<typename _Scalar, int _Options, typename _Index>
Index DynamicSparseMatrix< _Scalar, _Options, _Index >::innerSize (  )  const [inline]
Returns:
the size of the inner dimension according to the storage order, i.e., the number of rows for a columns major matrix, and the number of cols otherwise

Reimplemented from SparseMatrixBase< DynamicSparseMatrix< _Scalar, _Options, _Index > >.

template<typename _Scalar, int _Options, typename _Index>
Scalar& DynamicSparseMatrix< _Scalar, _Options, _Index >::insert ( Index  row,
Index  col 
) [inline]
template<typename _Scalar, int _Options, typename _Index>
Scalar& DynamicSparseMatrix< _Scalar, _Options, _Index >::insertBack ( Index  row,
Index  col 
) [inline]
Returns:
a reference to the non zero coefficient at position row, col assuming that:
  • the nonzero does not already exist
  • the new coefficient is the last one of the given inner vector.
See also:
insert, insertBackByOuterInner
template<typename _Scalar, int _Options, typename _Index>
Scalar& DynamicSparseMatrix< _Scalar, _Options, _Index >::insertBackByOuterInner ( Index  outer,
Index  inner 
) [inline]
See also:
insertBack
template<typename _Scalar, int _Options, typename _Index>
Index DynamicSparseMatrix< _Scalar, _Options, _Index >::nonZeros (  )  const [inline]
Returns:
the number of non zero coefficients

Reimplemented from SparseMatrixBase< DynamicSparseMatrix< _Scalar, _Options, _Index > >.

template<typename _Scalar, int _Options, typename _Index>
DynamicSparseMatrix& DynamicSparseMatrix< _Scalar, _Options, _Index >::operator= ( const DynamicSparseMatrix< _Scalar, _Options, _Index > &  other  )  [inline]
template<typename _Scalar, int _Options, typename _Index>
Index DynamicSparseMatrix< _Scalar, _Options, _Index >::outerSize (  )  const [inline]
Returns:
the size of the storage major dimension, i.e., the number of columns for a columns major matrix, and the number of rows otherwise

Reimplemented from SparseMatrixBase< DynamicSparseMatrix< _Scalar, _Options, _Index > >.

template<typename _Scalar, int _Options, typename _Index>
void DynamicSparseMatrix< _Scalar, _Options, _Index >::prune ( Scalar  reference,
RealScalar  epsilon = NumTraits<RealScalar>::dummy_precision() 
) [inline]

Suppress all nonzeros which are smaller than reference under the tolerence epsilon

template<typename _Scalar, int _Options, typename _Index>
void DynamicSparseMatrix< _Scalar, _Options, _Index >::reserve ( Index  reserveSize = 1000  )  [inline]
template<typename _Scalar, int _Options, typename _Index>
void DynamicSparseMatrix< _Scalar, _Options, _Index >::resize ( Index  rows,
Index  cols 
) [inline]

Resize the matrix without preserving the data (the matrix is set to zero)

template<typename _Scalar, int _Options, typename _Index>
void DynamicSparseMatrix< _Scalar, _Options, _Index >::resizeAndKeepData ( Index  rows,
Index  cols 
) [inline]
template<typename _Scalar, int _Options, typename _Index>
Index DynamicSparseMatrix< _Scalar, _Options, _Index >::rows ( void   )  const [inline]
Returns:
the number of rows.
See also:
cols(), RowsAtCompileTime

Reimplemented from SparseMatrixBase< DynamicSparseMatrix< _Scalar, _Options, _Index > >.

template<typename _Scalar, int _Options, typename _Index>
void DynamicSparseMatrix< _Scalar, _Options, _Index >::setZero (  )  [inline]
template<typename _Scalar, int _Options, typename _Index>
EIGEN_DEPRECATED void DynamicSparseMatrix< _Scalar, _Options, _Index >::startFill ( Index  reserveSize = 1000  )  [inline]
Deprecated:
Set the matrix to zero and reserve the memory for reserveSize nonzero coefficients.
template<typename _Scalar, int _Options, typename _Index>
void DynamicSparseMatrix< _Scalar, _Options, _Index >::startVec ( Index   )  [inline]

Does nothing: provided for compatibility with SparseMatrix

template<typename _Scalar, int _Options, typename _Index>
void DynamicSparseMatrix< _Scalar, _Options, _Index >::swap ( DynamicSparseMatrix< _Scalar, _Options, _Index > &  other  )  [inline]

Member Data Documentation

template<typename _Scalar, int _Options, typename _Index>
std::vector<CompressedStorage<Scalar,Index> > DynamicSparseMatrix< _Scalar, _Options, _Index >::m_data [protected]
template<typename _Scalar, int _Options, typename _Index>
Index DynamicSparseMatrix< _Scalar, _Options, _Index >::m_innerSize [protected]

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