![]() |
Eigen
3.2.7
|
A versatible sparse matrix representation.
This class implements a more versatile variants of the common compressed row/column storage format. Each colmun's (resp. row) non zeros are stored as a pair of value with associated row (resp. colmiun) index. All the non zeros are stored in a single large buffer. Unlike the compressed format, there might be extra space inbetween the nonzeros of two successive colmuns (resp. rows) such that insertion of new non-zero can be done with limited memory reallocation and copies.
A call to the function makeCompressed() turns the matrix into the standard compressed format compatible with many library.
More details on this storage sceheme are given in the manual pages.
_Scalar | the scalar type, i.e. the type of the coefficients |
_Options | Union of bit flags controlling the storage scheme. Currently the only possibility is ColMajor or RowMajor. The default is 0 which means column-major. |
_Index | the type of the indices. It has to be a signed type (e.g., short, int, std::ptrdiff_t). Default is int . |
This class can be extended with the help of the plugin mechanism described on the page Customizing/Extending Eigen by defining the preprocessor symbol EIGEN_SPARSEMATRIX_PLUGIN
.
Public Member Functions | |
const CwiseBinaryOp< CustomBinaryOp, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | binaryExpr (const Eigen::SparseMatrixBase< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) const |
Block< SparseMatrix< _Scalar, _Options, _Index > > | block (Index startRow, Index startCol, Index blockRows, Index blockCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index > > | block (Index startRow, Index startCol, Index blockRows, Index blockCols) const |
Block< SparseMatrix< _Scalar, _Options, _Index >, BlockRows, BlockCols > | block (Index startRow, Index startCol) |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, BlockRows, BlockCols > | block (Index startRow, Index startCol) const |
Block< SparseMatrix< _Scalar, _Options, _Index >, BlockRows, BlockCols > | block (Index startRow, Index startCol, Index blockRows, Index blockCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, BlockRows, BlockCols > | block (Index startRow, Index startCol, Index blockRows, Index blockCols) const |
Block< SparseMatrix< _Scalar, _Options, _Index > > | bottomLeftCorner (Index cRows, Index cCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index > > | bottomLeftCorner (Index cRows, Index cCols) const |
Block< SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | bottomLeftCorner () |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | bottomLeftCorner () const |
Block< SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | bottomLeftCorner (Index cRows, Index cCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | bottomLeftCorner (Index cRows, Index cCols) const |
Block< SparseMatrix< _Scalar, _Options, _Index > > | bottomRightCorner (Index cRows, Index cCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index > > | bottomRightCorner (Index cRows, Index cCols) const |
Block< SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | bottomRightCorner () |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | bottomRightCorner () const |
Block< SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | bottomRightCorner (Index cRows, Index cCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | bottomRightCorner (Index cRows, Index cCols) const |
RowsBlockXpr | bottomRows (Index n) |
ConstRowsBlockXpr | bottomRows (Index n) const |
NRowsBlockXpr< N >::Type | bottomRows (Index n=N) |
ConstNRowsBlockXpr< N >::Type | bottomRows (Index n=N) const |
internal::cast_return_type< SparseMatrix< _Scalar, _Options, _Index >, const CwiseUnaryOp< internal::scalar_cast_op< typename internal::traits< SparseMatrix< _Scalar, _Options, _Index > >::Scalar, NewType >, const SparseMatrix< _Scalar, _Options, _Index > > >::type | cast () const |
Scalar | coeff (Index row, Index col) const |
Scalar & | coeffRef (Index row, Index col) |
ColXpr | col (Index i) |
ConstColXpr | col (Index i) const |
Index | cols () const |
ConjugateReturnType | conjugate () const |
void | conservativeResize (Index rows, Index cols) |
const CwiseUnaryOp< internal::scalar_abs_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index > > | cwiseAbs () const |
const CwiseUnaryOp< internal::scalar_abs2_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index > > | cwiseAbs2 () const |
const CwiseBinaryOp< std::equal_to< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | cwiseEqual (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseScalarEqualReturnType | cwiseEqual (const Scalar &s) const |
const CwiseUnaryOp< internal::scalar_inverse_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index > > | cwiseInverse () const |
const CwiseBinaryOp< internal::scalar_max_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | cwiseMax (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp< internal::scalar_max_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const ConstantReturnType > | cwiseMax (const Scalar &other) const |
const CwiseBinaryOp< internal::scalar_min_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | cwiseMin (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp< internal::scalar_min_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const ConstantReturnType > | cwiseMin (const Scalar &other) const |
const CwiseBinaryOp< std::not_equal_to< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | cwiseNotEqual (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp< internal::scalar_product_op< typename SparseMatrix< _Scalar, _Options, _Index >::Scalar, typename OtherDerived::Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | cwiseProduct (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp< internal::scalar_quotient_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | cwiseQuotient (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseUnaryOp< internal::scalar_sqrt_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index > > | cwiseSqrt () const |
SparseMatrix< _Scalar, _Options, _Index > & | derived () |
const SparseMatrix< _Scalar, _Options, _Index > & | derived () const |
const Diagonal< const SparseMatrix > | diagonal () const |
const internal::eval< SparseMatrix< _Scalar, _Options, _Index > >::type | eval () const |
SegmentReturnType | head (Index n) |
ConstSegmentReturnType | head (Index n) const |
FixedSegmentReturnType< N >::Type | head (Index n=N) |
ConstFixedSegmentReturnType< N >::Type | head (Index n=N) const |
const ImagReturnType | imag () const |
NonConstImagReturnType | imag () |
const Index * | innerIndexPtr () const |
Index * | innerIndexPtr () |
const Index * | innerNonZeroPtr () const |
Index * | innerNonZeroPtr () |
Index | innerSize () const |
Scalar & | insert (Index row, Index col) |
bool | isCompressed () const |
bool | isVector () const |
ColsBlockXpr | leftCols (Index n) |
ConstColsBlockXpr | leftCols (Index n) const |
NColsBlockXpr< N >::Type | leftCols (Index n=N) |
ConstNColsBlockXpr< N >::Type | leftCols (Index n=N) const |
void | makeCompressed () |
ColsBlockXpr | middleCols (Index startCol, Index numCols) |
ConstColsBlockXpr | middleCols (Index startCol, Index numCols) const |
NColsBlockXpr< N >::Type | middleCols (Index startCol, Index n=N) |
ConstNColsBlockXpr< N >::Type | middleCols (Index startCol, Index n=N) const |
RowsBlockXpr | middleRows (Index startRow, Index n) |
ConstRowsBlockXpr | middleRows (Index startRow, Index n) const |
NRowsBlockXpr< N >::Type | middleRows (Index startRow, Index n=N) |
ConstNRowsBlockXpr< N >::Type | middleRows (Index startRow, Index n=N) const |
Index | nonZeros () const |
const ScalarMultipleReturnType | operator* (const Scalar &scalar) const |
const CwiseUnaryOp< internal::scalar_multiple2_op< Scalar, std::complex< Scalar > >, const SparseMatrix< _Scalar, _Options, _Index > > | operator* (const std::complex< Scalar > &scalar) const |
const SparseDenseProductReturnType< SparseMatrix< _Scalar, _Options, _Index >, OtherDerived >::Type | operator* (const MatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp< internal::scalar_sum_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | operator+ (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp< internal::scalar_difference_op< Scalar >, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | operator- (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseUnaryOp< internal::scalar_opposite_op< typename internal::traits< SparseMatrix< _Scalar, _Options, _Index > >::Scalar >, const SparseMatrix< _Scalar, _Options, _Index > > | operator- () const |
const CwiseUnaryOp< internal::scalar_quotient1_op< typename internal::traits< SparseMatrix< _Scalar, _Options, _Index > >::Scalar >, const SparseMatrix< _Scalar, _Options, _Index > > | operator/ (const Scalar &scalar) const |
const Index * | outerIndexPtr () const |
Index * | outerIndexPtr () |
Index | outerSize () const |
void | prune (const Scalar &reference, const RealScalar &epsilon=NumTraits< RealScalar >::dummy_precision()) |
template<typename KeepFunc > | |
void | prune (const KeepFunc &keep=KeepFunc()) |
RealReturnType | real () const |
NonConstRealReturnType | real () |
void | reserve (Index reserveSize) |
template<class SizesType > | |
void | reserve (const SizesType &reserveSizes) |
void | resize (Index rows, Index cols) |
ColsBlockXpr | rightCols (Index n) |
ConstColsBlockXpr | rightCols (Index n) const |
NColsBlockXpr< N >::Type | rightCols (Index n=N) |
ConstNColsBlockXpr< N >::Type | rightCols (Index n=N) const |
RowXpr | row (Index i) |
ConstRowXpr | row (Index i) const |
Index | rows () const |
SegmentReturnType | segment (Index start, Index n) |
ConstSegmentReturnType | segment (Index start, Index n) const |
FixedSegmentReturnType< N >::Type | segment (Index start, Index n=N) |
ConstFixedSegmentReturnType< N >::Type | segment (Index start, Index n=N) const |
template<typename InputIterators > | |
void | setFromTriplets (const InputIterators &begin, const InputIterators &end) |
void | setIdentity () |
void | setZero () |
Index | size () const |
SparseMatrix () | |
SparseMatrix (Index rows, Index cols) | |
template<typename OtherDerived > | |
SparseMatrix (const SparseMatrixBase< OtherDerived > &other) | |
template<typename OtherDerived , unsigned int UpLo> | |
SparseMatrix (const SparseSelfAdjointView< OtherDerived, UpLo > &other) | |
SparseMatrix (const SparseMatrix &other) | |
template<typename OtherDerived > | |
SparseMatrix (const ReturnByValue< OtherDerived > &other) | |
Copy constructor with in-place evaluation. | |
void | swap (SparseMatrix &other) |
SegmentReturnType | tail (Index n) |
ConstSegmentReturnType | tail (Index n) const |
FixedSegmentReturnType< N >::Type | tail (Index n=N) |
ConstFixedSegmentReturnType< N >::Type | tail (Index n=N) const |
Block< SparseMatrix< _Scalar, _Options, _Index > > | topLeftCorner (Index cRows, Index cCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index > > | topLeftCorner (Index cRows, Index cCols) const |
Block< SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | topLeftCorner () |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | topLeftCorner () const |
Block< SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | topLeftCorner (Index cRows, Index cCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | topLeftCorner (Index cRows, Index cCols) const |
Block< SparseMatrix< _Scalar, _Options, _Index > > | topRightCorner (Index cRows, Index cCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index > > | topRightCorner (Index cRows, Index cCols) const |
Block< SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | topRightCorner () |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | topRightCorner () const |
Block< SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | topRightCorner (Index cRows, Index cCols) |
const Block< const SparseMatrix< _Scalar, _Options, _Index >, CRows, CCols > | topRightCorner (Index cRows, Index cCols) const |
RowsBlockXpr | topRows (Index n) |
ConstRowsBlockXpr | topRows (Index n) const |
NRowsBlockXpr< N >::Type | topRows (Index n=N) |
ConstNRowsBlockXpr< N >::Type | topRows (Index n=N) const |
SparseSymmetricPermutationProduct< SparseMatrix< _Scalar, _Options, _Index >, Upper|Lower > | twistedBy (const PermutationMatrix< Dynamic, Dynamic, Index > &perm) const |
const CwiseUnaryOp< CustomUnaryOp, const SparseMatrix< _Scalar, _Options, _Index > > | unaryExpr (const CustomUnaryOp &func=CustomUnaryOp()) const |
Apply a unary operator coefficient-wise. More... | |
const CwiseUnaryView< CustomViewOp, const SparseMatrix< _Scalar, _Options, _Index > > | unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const |
void | uncompress () |
const Scalar * | valuePtr () const |
Scalar * | valuePtr () |
~SparseMatrix () | |
|
inline |
Default constructor yielding an empty 0
x
0
matrix
|
inline |
Constructs a rows x
cols empty matrix
|
inline |
Constructs a sparse matrix from the sparse expression other
|
inline |
Constructs a sparse matrix from the sparse selfadjoint view other
|
inline |
Copy constructor (it performs a deep copy)
|
inline |
Destructor
|
inlineinherited |
The template parameter CustomBinaryOp is the type of the functor of the custom operator (see class CwiseBinaryOp for an example)
Here is an example illustrating the use of custom functors:
Output:
(-1,0.342) (0.0655,-0.165) (0.359,0.692) (0.662,-0.168) (-0.737,-0.985) (-0.562,0.374) (0.869,0.0539) (-0.931,0.402) (0.511,-0.233) (-0.906,0.178) (-0.233,-0.816) (-0.893,0.821) (-0.0827,-0.866) (0.358,0.861) (0.0388,0.308) (0.0594,0.524)
|
inlineinherited |
startRow | the first row in the block |
startCol | the first column in the block |
blockRows | the number of rows in the block |
blockCols | the number of columns in the block |
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.block(1, 1, 2, 2): -6 9 -10 -2 Now the matrix m is: -10 1 4 7 -8 0 0 -10 5 0 0 -9 -1 4 0 1
|
inlineinherited |
This is the const version of block(Index,Index,Index,Index).
|
inlineinherited |
The template parameters BlockRows and BlockCols are the number of rows and columns in the block.
startRow | the first row in the block |
startCol | the first column in the block |
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.block<2,2>(1,1): -6 9 -10 -2 Now the matrix m is: -10 1 4 7 -8 0 0 -10 5 0 0 -9 -1 4 0 1
|
inlineinherited |
This is the const version of block<>(Index, Index).
|
inlineinherited |
BlockRows | number of rows in block as specified at compile-time |
BlockCols | number of columns in block as specified at compile-time |
startRow | the first row in the block |
startCol | the first column in the block |
blockRows | number of rows in block as specified at run-time |
blockCols | number of columns in block as specified at run-time |
This function is mainly useful for blocks where the number of rows is specified at compile-time and the number of columns is specified at run-time, or vice versa. The compile-time and run-time information should not contradict. In other words, blockRows should equal BlockRows unless BlockRows is Dynamic, and the same for the number of columns.
Example:
Output:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is the block:" << endl << m.block<2, Dynamic>(1, 1, 2, 3) << endl; m.block<2, Dynamic>(1, 1, 2, 3).setZero(); cout << "Now the matrix m is:" << endl << m << endl;
|
inlineinherited |
This is the const version of block<>(Index, Index, Index, Index).
|
inlineinherited |
cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.bottomLeftCorner(2, 2): 5 -10 -1 4 Now the matrix m is: -10 1 4 7 -8 -6 9 -10 0 0 -2 -9 0 0 0 1
|
inlineinherited |
This is the const version of bottomLeftCorner(Index, Index).
|
inlineinherited |
The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.bottomLeftCorner<2,2>(): 5 -10 -1 4 Now the matrix m is: -10 1 4 7 -8 -6 9 -10 0 0 -2 -9 0 0 0 1
|
inlineinherited |
This is the const version of bottomLeftCorner<int, int>().
|
inlineinherited |
CRows | number of rows in corner as specified at compile-time |
CCols | number of columns in corner as specified at compile-time |
cRows | number of rows in corner as specified at run-time |
cCols | number of columns in corner as specified at run-time |
This function is mainly useful for corners where the number of rows is specified at compile-time and the number of columns is specified at run-time, or vice versa. The compile-time and run-time information should not contradict. In other words, cRows should equal CRows unless CRows is Dynamic, and the same for the number of columns.
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.bottomLeftCorner<2,Dynamic>(2,2): 5 -10 -1 4 Now the matrix m is: -10 1 4 7 -8 -6 9 -10 0 0 -2 -9 0 0 0 1
|
inlineinherited |
This is the const version of bottomLeftCorner<int, int>(Index, Index).
|
inlineinherited |
cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.bottomRightCorner(2, 2): -2 -9 0 1 Now the matrix m is: -10 1 4 7 -8 -6 9 -10 5 -10 0 0 -1 4 0 0
|
inlineinherited |
This is the const version of bottomRightCorner(Index, Index).
|
inlineinherited |
The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.bottomRightCorner<2,2>(): -2 -9 0 1 Now the matrix m is: -10 1 4 7 -8 -6 9 -10 5 -10 0 0 -1 4 0 0
|
inlineinherited |
This is the const version of bottomRightCorner<int, int>().
|
inlineinherited |
CRows | number of rows in corner as specified at compile-time |
CCols | number of columns in corner as specified at compile-time |
cRows | number of rows in corner as specified at run-time |
cCols | number of columns in corner as specified at run-time |
This function is mainly useful for corners where the number of rows is specified at compile-time and the number of columns is specified at run-time, or vice versa. The compile-time and run-time information should not contradict. In other words, cRows should equal CRows unless CRows is Dynamic, and the same for the number of columns.
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.bottomRightCorner<2,Dynamic>(2,2): -2 -9 0 1 Now the matrix m is: -10 1 4 7 -8 -6 9 -10 5 -10 0 0 -1 4 0 0
|
inlineinherited |
This is the const version of bottomRightCorner<int, int>(Index, Index).
|
inlineinherited |
n | the number of rows in the block |
Example:
Output:
Here is the array a: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is a.bottomRows(2): 5 -10 -2 -9 -1 4 0 1 Now the array a is: -10 1 4 7 -8 -6 9 -10 0 0 0 0 0 0 0 0
|
inlineinherited |
This is the const version of bottomRows(Index).
|
inlineinherited |
N | the number of rows in the block as specified at compile-time |
n | the number of rows in the block as specified at run-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
Here is the array a: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is a.bottomRows<2>(): 5 -10 -2 -9 -1 4 0 1 Now the array a is: -10 1 4 7 -8 -6 9 -10 0 0 0 0 0 0 0 0
|
inlineinherited |
This is the const version of bottomRows<int>().
|
inlineinherited |
The template parameter NewScalar is the type we are casting the scalars to.
|
inline |
|
inline |
If the element does not exist then it is inserted via the insert(Index,Index) function which itself turns the matrix into a non compressed form if that was not the case.
This is a O(log(nnz_j)) operation (binary search) plus the cost of insert(Index,Index) function if the element does not already exist.
|
inlineinherited |
Example:
Output:
1 4 0 0 5 0 0 6 1
Referenced by SparseMatrix< Scalar, RowMajor >::coeff(), and SparseMatrix< Scalar, RowMajor >::coeffRef().
|
inlineinherited |
This is the const version of col().
|
inline |
Referenced by SparseMatrix< Scalar, RowMajor >::coeff(), SparseMatrix< Scalar, RowMajor >::coeffRef(), SparseQR< _MatrixType, _OrderingType >::cols(), SparseMatrix< Scalar, RowMajor >::conservativeResize(), SparseMatrix< Scalar, RowMajor >::insert(), SparseMatrix< Scalar, RowMajor >::resize(), and SparseMatrix< Scalar, RowMajor >::setIdentity().
|
inlineinherited |
*this
.
|
inline |
|
inlineinherited |
*this
Example:
Output:
2 4 6 5 1 0
|
inlineinherited |
*this
Example:
Output:
4 16 36 25 1 0
|
inlineinherited |
Example:
Output:
Comparing m with identity matrix: 1 1 0 1 Number of coefficients that are equal: 3
|
inlineinherited |
*this
and a scalar s
|
inlineinherited |
Example:
Output:
0.5 2 1 0.333 4 1
|
inlineinherited |
Example:
Output:
4 3 4
|
inlineinherited |
|
inlineinherited |
Example:
Output:
2 2 3
|
inlineinherited |
|
inlineinherited |
Example:
Output:
Comparing m with identity matrix: 0 0 1 0 Number of coefficients that are not equal: 1
|
inlineinherited |
Example:
Output:
a: -10 -1 -10 -8 1 4 5 -6 4 b: 9 7 1 -2 -10 4 0 -9 -10 c: -90 -7 -10 16 -10 16 0 54 -40
|
inlineinherited |
Example:
Output:
0.5 1.5 1.33
|
inlineinherited |
Example:
Output:
1 1.41 2
|
inlineinherited |
|
inlineinherited |
|
inline |
|
inlineinherited |
Notice that in the case of a plain matrix or vector (not an expression) this function just returns a const reference, in order to avoid a useless copy.
|
inlineinherited |
This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column.
n | the number of coefficients in the segment |
Example:
Output:
Here is the vector v: -10 -8 5 -1 Here is v.head(2): -10 -8 Now the vector v is: 0 0 5 -1
|
inlineinherited |
This is the const version of head(Index).
|
inlineinherited |
This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column.
N | the number of coefficients in the segment as specified at compile-time |
n | the number of coefficients in the segment as specified at run-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
Here is the vector v: -10 -8 5 -1 Here is v.head(2): -10 -8 Now the vector v is: 0 0 5 -1
|
inlineinherited |
This is the const version of head<int>().
|
inlineinherited |
*this
.
|
inlineinherited |
*this
.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inherited |
*this
if *this
is col-major (resp. row-major).
|
inherited |
*this
if *this
is col-major (resp. row-major). Read-only.
|
inherited |
*this
if *this
is col-major (resp. row-major).
|
inherited |
*this
if *this
is col-major (resp. row-major). Read-only.
|
inline |
If the matrix *this
is in compressed mode, then *this
is turned into uncompressed mode while reserving room for 2 non zeros per inner vector. It is strongly recommended to first call reserve(const SizesType &) to reserve a more appropriate number of elements per inner vector that better match your scenario.
This function performs a sorted insertion in O(1) if the elements of each inner vector are inserted in increasing inner index order, and in O(nnz_j) for a random insertion.
Referenced by SparseMatrix< Scalar, RowMajor >::coeffRef().
|
inline |
*this
is in compressed form. Referenced by SparseMatrix< Scalar, RowMajor >::insert(), SparseMatrix< Scalar, RowMajor >::makeCompressed(), and SparseMatrix< Scalar, RowMajor >::reserve().
|
inlineinherited |
|
inlineinherited |
n | the number of columns in the block |
Example:
Output:
Here is the array a: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is a.leftCols(2): -10 1 -8 -6 5 -10 -1 4 Now the array a is: 0 0 4 7 0 0 9 -10 0 0 -2 -9 0 0 0 1
|
inlineinherited |
This is the const version of leftCols(Index).
|
inlineinherited |
N | the number of columns in the block as specified at compile-time |
n | the number of columns in the block as specified at run-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
Here is the array a: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is a.leftCols<2>(): -10 1 -8 -6 5 -10 -1 4 Now the array a is: 0 0 4 7 0 0 9 -10 0 0 -2 -9 0 0 0 1
|
inlineinherited |
This is the const version of leftCols<int>().
|
inline |
Turns the matrix into the compressed format.
Referenced by SparseMatrix< Scalar, RowMajor >::prune().
|
inlineinherited |
startCol | the index of the first column in the block |
numCols | the number of columns in the block |
Example:
Output:
A = -10 -6 -2 1 -2 -8 -10 0 4 4 5 4 7 -10 2 -1 4 -10 -2 9 1 9 -9 -9 7 A(1..3,:) = -6 -2 1 -10 0 4 4 7 -10 4 -10 -2 9 -9 -9
|
inlineinherited |
This is the const version of middleCols(Index,Index).
|
inlineinherited |
N | the number of columns in the block as specified at compile-time |
startCol | the index of the first column in the block |
n | the number of columns in the block as specified at run-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
A = -10 -6 -2 1 -2 -8 -10 0 4 4 5 4 7 -10 2 -1 4 -10 -2 9 1 9 -9 -9 7 A(:,1..3) = -6 -2 1 -10 0 4 4 7 -10 4 -10 -2 9 -9 -9
|
inlineinherited |
This is the const version of middleCols<int>().
|
inlineinherited |
startRow | the index of the first row in the block |
n | the number of rows in the block |
Example:
Output:
A = -10 -6 -2 1 -2 -8 -10 0 4 4 5 4 7 -10 2 -1 4 -10 -2 9 1 9 -9 -9 7 A(2..3,:) = 5 4 7 -10 2 -1 4 -10 -2 9
|
inlineinherited |
This is the const version of middleRows(Index,Index).
|
inlineinherited |
N | the number of rows in the block as specified at compile-time |
startRow | the index of the first row in the block |
n | the number of rows in the block as specified at run-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
A = -10 -6 -2 1 -2 -8 -10 0 4 4 5 4 7 -10 2 -1 4 -10 -2 9 1 9 -9 -9 7 A(1..3,:) = -8 -10 0 4 4 5 4 7 -10 2 -1 4 -10 -2 9
|
inlineinherited |
This is the const version of middleRows<int>().
|
inline |
|
inlineinherited |
*this
scaled by the scalar factor scalar
|
inlineinherited |
Overloaded for efficient real matrix times complex scalar value
|
inlineinherited |
sparse * dense (returns a dense object unless it is an outer product)
|
inherited |
*this
and other
|
inherited |
*this
and other
|
inlineinherited |
*this
|
inlineinherited |
*this
divided by the scalar value scalar
|
inline |
|
inline |
|
inline |
Referenced by SparseMatrix< Scalar, RowMajor >::insert(), and SparseMatrix< Scalar, RowMajor >::resize().
|
inline |
Suppresses all nonzeros which are much smaller than reference under the tolerence epsilon
Referenced by SparseMatrix< Scalar, RowMajor >::prune().
|
inline |
|
inlineinherited |
*this
.
|
inlineinherited |
*this
.
|
inline |
Preallocates reserveSize non zeros.
Precondition: the matrix must be in compressed mode.
Referenced by SparseMatrix< Scalar, RowMajor >::insert().
|
inline |
Preallocates reserveSize[j
] non zeros for each column (resp. row) j
.
This function turns the matrix in non-compressed mode
|
inline |
Resizes the matrix to a rows x cols matrix and initializes it to zero.
Referenced by SparseMatrix< Scalar, RowMajor >::conservativeResize(), and SparseMatrix< Scalar, RowMajor >::SparseMatrix().
|
inlineinherited |
n | the number of columns in the block |
Example:
Output:
Here is the array a: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is a.rightCols(2): 4 7 9 -10 -2 -9 0 1 Now the array a is: -10 1 0 0 -8 -6 0 0 5 -10 0 0 -1 4 0 0
|
inlineinherited |
This is the const version of rightCols(Index).
|
inlineinherited |
N | the number of columns in the block as specified at compile-time |
n | the number of columns in the block as specified at run-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
Here is the array a: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is a.rightCols<2>(): 4 7 9 -10 -2 -9 0 1 Now the array a is: -10 1 0 0 -8 -6 0 0 5 -10 0 0 -1 4 0 0
|
inlineinherited |
This is the const version of rightCols<int>().
|
inlineinherited |
Example:
Output:
1 0 0 4 5 6 0 0 1
Referenced by SparseMatrix< Scalar, RowMajor >::coeff(), and SparseMatrix< Scalar, RowMajor >::coeffRef().
|
inlineinherited |
This is the const version of row().
|
inline |
Referenced by SparseMatrix< Scalar, RowMajor >::coeff(), SparseMatrix< Scalar, RowMajor >::coeffRef(), SparseMatrix< Scalar, RowMajor >::conservativeResize(), SparseMatrix< Scalar, RowMajor >::insert(), SparseMatrix< Scalar, RowMajor >::resize(), SparseQR< _MatrixType, _OrderingType >::rows(), and SparseMatrix< Scalar, RowMajor >::setIdentity().
|
inlineinherited |
This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column.
start | the first coefficient in the segment |
n | the number of coefficients in the segment |
Example:
Output:
Here is the vector v: -10 -8 5 -1 Here is v.segment(1, 2): -8 5 Now the vector v is: -10 0 0 -1
|
inlineinherited |
This is the const version of segment(Index,Index).
|
inlineinherited |
*this
This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column.
N | the number of coefficients in the segment as specified at compile-time |
start | the index of the first element in the segment |
n | the number of coefficients in the segment as specified at compile-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
Here is the vector v: -10 -8 5 -1 Here is v.segment<2>(1): -8 5 Now the vector v is: -10 -8 0 0
|
inlineinherited |
This is the const version of segment<int>(Index).
void setFromTriplets | ( | const InputIterators & | begin, |
const InputIterators & | end | ||
) |
Fill the matrix *this
with the list of triplets defined by the iterator range begin - end.
A triplet is a tuple (i,j,value) defining a non-zero element. The input list of triplets does not have to be sorted, and can contains duplicated elements. In any case, the result is a sorted and compressed sparse matrix where the duplicates have been summed up. This is a O(n) operation, with n the number of triplet elements. The initial contents of *this
is destroyed. The matrix *this
must be properly resized beforehand using the SparseMatrix(Index,Index) constructor, or the resize(Index,Index) method. The sizes are not extracted from the triplet list.
The InputIterators value_type must provide the following interface:
See for instance the Eigen::Triplet template class.
Here is a typical usage example:
|
inline |
Sets *this to the identity matrix. This function also turns the matrix into compressed mode, and drop any reserved memory.
|
inline |
Removes all non zeros but keep allocated memory
|
inlineinherited |
|
inline |
Swaps the content of two sparse matrices of the same type. This is a fast operation that simply swaps the underlying pointers and parameters.
|
inlineinherited |
This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column.
n | the number of coefficients in the segment |
Example:
Output:
Here is the vector v: -10 -8 5 -1 Here is v.tail(2): 5 -1 Now the vector v is: -10 -8 0 0
|
inlineinherited |
This is the const version of tail(Index).
|
inlineinherited |
This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column.
N | the number of coefficients in the segment as specified at compile-time |
n | the number of coefficients in the segment as specified at run-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
Here is the vector v: -10 -8 5 -1 Here is v.tail(2): 5 -1 Now the vector v is: -10 -8 0 0
|
inlineinherited |
This is the const version of tail<int>.
|
inlineinherited |
cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.topLeftCorner(2, 2): -10 1 -8 -6 Now the matrix m is: 0 0 4 7 0 0 9 -10 5 -10 -2 -9 -1 4 0 1
|
inlineinherited |
This is the const version of topLeftCorner(Index, Index).
|
inlineinherited |
The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.topLeftCorner<2,2>(): -10 1 -8 -6 Now the matrix m is: 0 0 4 7 0 0 9 -10 5 -10 -2 -9 -1 4 0 1
|
inlineinherited |
This is the const version of topLeftCorner<int, int>().
|
inlineinherited |
CRows | number of rows in corner as specified at compile-time |
CCols | number of columns in corner as specified at compile-time |
cRows | number of rows in corner as specified at run-time |
cCols | number of columns in corner as specified at run-time |
This function is mainly useful for corners where the number of rows is specified at compile-time and the number of columns is specified at run-time, or vice versa. The compile-time and run-time information should not contradict. In other words, cRows should equal CRows unless CRows is Dynamic, and the same for the number of columns.
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.topLeftCorner<2,Dynamic>(2,2): -10 1 -8 -6 Now the matrix m is: 0 0 4 7 0 0 9 -10 5 -10 -2 -9 -1 4 0 1
|
inlineinherited |
This is the const version of topLeftCorner<int, int>(Index, Index).
|
inlineinherited |
cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.topRightCorner(2, 2): 4 7 9 -10 Now the matrix m is: -10 1 0 0 -8 -6 0 0 5 -10 -2 -9 -1 4 0 1
|
inlineinherited |
This is the const version of topRightCorner(Index, Index).
|
inlineinherited |
CRows | the number of rows in the corner |
CCols | the number of columns in the corner |
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.topRightCorner<2,2>(): 4 7 9 -10 Now the matrix m is: -10 1 0 0 -8 -6 0 0 5 -10 -2 -9 -1 4 0 1
|
inlineinherited |
This is the const version of topRightCorner<int, int>().
|
inlineinherited |
CRows | number of rows in corner as specified at compile-time |
CCols | number of columns in corner as specified at compile-time |
cRows | number of rows in corner as specified at run-time |
cCols | number of columns in corner as specified at run-time |
This function is mainly useful for corners where the number of rows is specified at compile-time and the number of columns is specified at run-time, or vice versa. The compile-time and run-time information should not contradict. In other words, cRows should equal CRows unless CRows is Dynamic, and the same for the number of columns.
Example:
Output:
Here is the matrix m: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is m.topRightCorner<2,Dynamic>(2,2): 4 7 9 -10 Now the matrix m is: -10 1 0 0 -8 -6 0 0 5 -10 -2 -9 -1 4 0 1
|
inlineinherited |
This is the const version of topRightCorner<int, int>(Index, Index).
|
inlineinherited |
n | the number of rows in the block |
Example:
Output:
Here is the array a: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is a.topRows(2): -10 1 4 7 -8 -6 9 -10 Now the array a is: 0 0 0 0 0 0 0 0 5 -10 -2 -9 -1 4 0 1
|
inlineinherited |
This is the const version of topRows(Index).
|
inlineinherited |
N | the number of rows in the block as specified at compile-time |
n | the number of rows in the block as specified at run-time |
The compile-time and run-time information should not contradict. In other words, n should equal N unless N is Dynamic.
Example:
Output:
Here is the array a: -10 1 4 7 -8 -6 9 -10 5 -10 -2 -9 -1 4 0 1 Here is a.topRows<2>(): -10 1 4 7 -8 -6 9 -10 Now the array a is: 0 0 0 0 0 0 0 0 5 -10 -2 -9 -1 4 0 1
|
inlineinherited |
This is the const version of topRows<int>().
|
inlineinherited |
*this
|
inlineinherited |
Apply a unary operator coefficient-wise.
[in] | func | Functor implementing the unary operator |
CustomUnaryOp | Type of func |
The function ptr_fun()
from the C++ standard library can be used to make functors out of normal functions.
Example:
Output:
-1 0.0655 0.359 0.662 -0.737 -0.562 0.869 -0.931 0.511 -0.906 -0.233 -0.893 -0.0827 0.358 0.0388 0.0594 becomes: 0 0.0655 0.359 0.662 0 0 0.869 0 0.511 0 0 0 0 0.358 0.0388 0.0594
Genuine functors allow for more possibilities, for instance it may contain a state.
Example:
Output:
-1 0.0655 0.359 0.662 -0.737 -0.562 0.869 -0.931 0.511 -0.906 -0.233 -0.893 -0.0827 0.358 0.0388 0.0594 becomes: -0.5 0.0655 0.359 0.5 -0.5 -0.5 0.5 -0.5 0.5 -0.5 -0.233 -0.5 -0.0827 0.358 0.0388 0.0594
|
inlineinherited |
The template parameter CustomUnaryOp is the type of the functor of the custom unary operator.
Example:
Output:
-1 0.0655 0.359 0.662 -0.737 -0.562 0.869 -0.931 0.511 -0.906 -0.233 -0.893 -0.0827 0.358 0.0388 0.0594 becomes: -0.5 0.0655 0.359 0.5 -0.5 -0.5 0.5 -0.5 0.5 -0.5 -0.233 -0.5 -0.0827 0.358 0.0388 0.0594
|
inline |
Turns the matrix into the uncompressed mode
|
inline |
|
inline |