#include <sparsematrixbase.hpp>
Public Types | |
typedef Eigen::SparseMatrix < Scalar > | Base |
typedef double | RealScalar |
typedef int | TIndex |
typedef Scalar | TScalar |
Public Member Functions | |
template<typename OtherDerived> | |
void | Assign (const Eigen::SparseMatrixBase< OtherDerived > &other) |
sets the contents of this object | |
MathSparseArrayBase (const TIndex &nrow, const TIndex &ncol=1) | |
constructs a nrow*ncol matrix | |
MathSparseArrayBase (const Base &x) | |
copy constructor from Eigen objects | |
template<typename OtherDerived> | |
MathSparseArrayBase (const Eigen::SparseMatrixBase< OtherDerived > &x) | |
copy constructor from Eigen objects | |
MathSparseArrayBase (const MathSparseArrayBase< TScalar > &ar) | |
copy constructor | |
MathSparseArrayBase () | |
default constructor | |
MathSparseArrayBase< TScalar > & | operator= (const Base &other) |
The '=' operator for sparse matrix type Eigen::SparseMatrix. | |
template<typename OtherDerived> | |
MathSparseArrayBase< TScalar > & | operator= (const Eigen::SparseMatrixBase< OtherDerived > &other) |
The '=' operator for Eigen sparse matrix types. | |
void | Swap (Eigen::SparseMatrix< Scalar > &other) |
swaps the data pointers of both objects (fastest way to transfer data) | |
virtual | ~MathSparseArrayBase () |
The storage scheme is column_major (FORTRAN). It basically provides basic features of the Eigen::SparseMatrix class, i.e. basic operators and assembly methods.
The storage scheme is described in the Eigen doc in detail. It should be noted that one can view any column_major sparse matrix as a set of 'ncols' sparse vectors. The sparse vectors are labeled by the index i ("outer iterator"), the access of the elements within these vectors is labeled by the Eigen::InnerIterator object it ("inner iterator"/ "inner loop").
The following methods can be used for storage:
(1) Sorted fill (fastest)
SparseMatrix\<double,ColMajor> m(rows,cols); m.startFill(rows*cols*percent_of_non_zero); // estimate of the number of nonzeros (optional) for (int j=0; j\<cols; ++j) for (int i=0; i\<rows; ++i) if (rand()\<percent_of_non_zero) m.fill(i,j) = rand(); m.endFill();
One has to fill the elements according to their internal index sort order (2) Fill by random inner access Herein one has to fill each outer index in its given sort order, but may fill the items into the currently active sparse vector in random order:
SparseMatrix\<double,ColMajor> m(rows,cols); m.startFill(rows*cols*percent_of_non_zero); // estimate of the number of nonzeros (optional) for (int k=0; k\<cols; ++k) for (int i=0; i\<rows*percent_of_non_zero; ++i) m.fillrand(i,rand(0,cols)) = rand(); m.endFill();
virtual tngmath::MathSparseArrayBase< Scalar >::~MathSparseArrayBase | ( | ) | [inline, virtual] |
destructor