Public Types | Public Member Functions | Protected Types | Protected Attributes | List of all members
DynamicSparseMatrix< _Scalar, _Flags > Class Template Reference

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

Public Types

typedef MappedSparseMatrix
< Scalar, Flags > 
Map
 

Public Member Functions

std::vector< CompressedStorage
< Scalar > > & 
_data ()
 
const std::vector
< CompressedStorage< Scalar > > & 
_data () const
 
Scalar coeff (int row, int col) const
 
Scalar & coeffRef (int row, int col)
 
int cols () const
 
 DynamicSparseMatrix (int rows, int cols)
 
template<typename OtherDerived >
 DynamicSparseMatrix (const SparseMatrixBase< OtherDerived > &other)
 
 DynamicSparseMatrix (const DynamicSparseMatrix &other)
 
void endFill ()
 
Scalar & fill (int row, int col)
 
Scalar & fillrand (int row, int col)
 
int innerNonZeros (int j) const
 
int innerSize () const
 
int nonZeros () const
 
DynamicSparseMatrixoperator= (const DynamicSparseMatrix &other)
 
template<typename OtherDerived >
DynamicSparseMatrixoperator= (const SparseMatrixBase< OtherDerived > &other)
 
int outerSize () const
 
void prune (Scalar reference, RealScalar epsilon=precision< RealScalar >())
 
void resize (int rows, int cols)
 
void resizeAndKeepData (int rows, int cols)
 
int rows () const
 
void setZero ()
 
void startFill (int reserveSize=1000)
 
void swap (DynamicSparseMatrix &other)
 
 ~DynamicSparseMatrix ()
 

Protected Types

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

Protected Attributes

std::vector< CompressedStorage
< Scalar > > 
m_data
 
int m_innerSize
 

Detailed Description

template<typename _Scalar, int _Flags = 0>
class Eigen::DynamicSparseMatrix< _Scalar, _Flags >

A sparse matrix class designed for matrix assembly purpose.

Parameters
_Scalarthe 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

Constructor & Destructor Documentation

~DynamicSparseMatrix ( )
inline

Destructor

Member Function Documentation

Scalar coeff ( int  row,
int  col 
) const
inline
Returns
the coefficient value at given position row, col This operation involes a log(rho*outer_size) binary search.
Scalar& coeffRef ( int  row,
int  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.
void endFill ( )
inline

Does nothing. Provided for compatibility with SparseMatrix.

Scalar& fill ( int  row,
int  col 
)
inline

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()
Scalar& fillrand ( int  row,
int  col 
)
inline

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.

int nonZeros ( ) const
inline
Returns
the number of non zero coefficients
void resize ( int  rows,
int  cols 
)
inline

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

void startFill ( int  reserveSize = 1000)
inline

Set the matrix to zero and reserve the memory for reserveSize nonzero coefficients.


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