![]() |
Eigen
3.4.0
|
Base class of any sparse matrices or sparse expressions.
Derived | is the derived type, e.g. a sparse matrix type, or an expression, etc. |
This class can be extended with the help of the plugin mechanism described on the page Extending MatrixBase (and other classes) by defining the preprocessor symbol EIGEN_SPARSEMATRIXBASE_PLUGIN
.
Public Types | |
enum | { RowsAtCompileTime, ColsAtCompileTime, SizeAtCompileTime , IsVectorAtCompileTime, NumDimensions, Flags } |
typedef internal::traits< Derived >::StorageIndex | StorageIndex |
typedef Scalar | value_type |
![]() | |
typedef Eigen::Index | Index |
The interface type of indices. More... | |
Public Member Functions | |
template<typename CustomBinaryOp , typename OtherDerived > | |
const CwiseBinaryOp< CustomBinaryOp, const Derived, const OtherDerived > | binaryExpr (const Eigen::SparseMatrixBase< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) const |
template<typename NRowsType , typename NColsType > | |
FixedBlockXpr<...,... >::Type | block (Index startRow, Index startCol, NRowsType blockRows, NColsType blockCols) |
template<typename NRowsType , typename NColsType > | |
const ConstFixedBlockXpr<...,... >::Type | block (Index startRow, Index startCol, NRowsType blockRows, NColsType blockCols) const |
This is the const version of block(Index,Index,NRowsType,NColsType) | |
template<int NRows, int NCols> | |
FixedBlockXpr< NRows, NCols >::Type | block (Index startRow, Index startCol) |
template<int NRows, int NCols> | |
const ConstFixedBlockXpr< NRows, NCols >::Type | block (Index startRow, Index startCol) const |
This is the const version of block<>(Index, Index). */. | |
template<int NRows, int NCols> | |
FixedBlockXpr< NRows, NCols >::Type | block (Index startRow, Index startCol, Index blockRows, Index blockCols) |
template<int NRows, int NCols> | |
const ConstFixedBlockXpr< NRows, NCols >::Type | block (Index startRow, Index startCol, Index blockRows, Index blockCols) const |
This is the const version of block<>(Index, Index, Index, Index). | |
template<typename NRowsType , typename NColsType > | |
FixedBlockXpr<...,... >::Type | bottomLeftCorner (NRowsType cRows, NColsType cCols) |
template<typename NRowsType , typename NColsType > | |
ConstFixedBlockXpr<...,... >::Type | bottomLeftCorner (NRowsType cRows, NColsType cCols) const |
This is the const version of bottomLeftCorner(NRowsType, NColsType). | |
template<int CRows, int CCols> | |
FixedBlockXpr< CRows, CCols >::Type | bottomLeftCorner () |
template<int CRows, int CCols> | |
const ConstFixedBlockXpr< CRows, CCols >::Type | bottomLeftCorner () const |
This is the const version of bottomLeftCorner<int, int>(). | |
template<int CRows, int CCols> | |
FixedBlockXpr< CRows, CCols >::Type | bottomLeftCorner (Index cRows, Index cCols) |
template<int CRows, int CCols> | |
const ConstFixedBlockXpr< CRows, CCols >::Type | bottomLeftCorner (Index cRows, Index cCols) const |
This is the const version of bottomLeftCorner<int, int>(Index, Index). | |
template<typename NRowsType , typename NColsType > | |
FixedBlockXpr<...,... >::Type | bottomRightCorner (NRowsType cRows, NColsType cCols) |
template<typename NRowsType , typename NColsType > | |
const ConstFixedBlockXpr<...,... >::Type | bottomRightCorner (NRowsType cRows, NColsType cCols) const |
This is the const version of bottomRightCorner(NRowsType, NColsType). | |
template<int CRows, int CCols> | |
FixedBlockXpr< CRows, CCols >::Type | bottomRightCorner () |
template<int CRows, int CCols> | |
const ConstFixedBlockXpr< CRows, CCols >::Type | bottomRightCorner () const |
This is the const version of bottomRightCorner<int, int>(). | |
template<int CRows, int CCols> | |
FixedBlockXpr< CRows, CCols >::Type | bottomRightCorner (Index cRows, Index cCols) |
template<int CRows, int CCols> | |
const ConstFixedBlockXpr< CRows, CCols >::Type | bottomRightCorner (Index cRows, Index cCols) const |
This is the const version of bottomRightCorner<int, int>(Index, Index). | |
template<typename NRowsType > | |
NRowsBlockXpr<... >::Type | bottomRows (NRowsType n) |
template<typename NRowsType > | |
const ConstNRowsBlockXpr<... >::Type | bottomRows (NRowsType n) const |
This is the const version of bottomRows(NRowsType). | |
template<int N> | |
NRowsBlockXpr< N >::Type | bottomRows (Index n=N) |
template<int N> | |
ConstNRowsBlockXpr< N >::Type | bottomRows (Index n=N) const |
This is the const version of bottomRows<int>(). | |
template<typename NewType > | |
CastXpr< NewType >::Type | cast () const |
ColXpr | col (Index i) |
ConstColXpr | col (Index i) const |
This is the const version of col(). | |
Index | cols () const |
ConjugateReturnType | conjugate () const |
template<bool Cond> | |
internal::conditional< Cond, ConjugateReturnType, const Derived & >::type | conjugateIf () const |
const CwiseAbsReturnType | cwiseAbs () const |
const CwiseAbs2ReturnType | cwiseAbs2 () const |
const CwiseArgReturnType | cwiseArg () const |
template<typename OtherDerived > | |
const CwiseBinaryOp< numext::equal_to< Scalar >, const Derived, const OtherDerived > | cwiseEqual (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseScalarEqualReturnType | cwiseEqual (const Scalar &s) const |
const CwiseInverseReturnType | cwiseInverse () const |
template<typename OtherDerived > | |
const CwiseBinaryOp< internal::scalar_max_op< Scalar, Scalar >, const Derived, const OtherDerived > | cwiseMax (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp< internal::scalar_max_op< Scalar, Scalar >, const Derived, const ConstantReturnType > | cwiseMax (const Scalar &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp< internal::scalar_min_op< Scalar, Scalar >, const Derived, const OtherDerived > | cwiseMin (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp< internal::scalar_min_op< Scalar, Scalar >, const Derived, const ConstantReturnType > | cwiseMin (const Scalar &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp< numext::not_equal_to< Scalar >, const Derived, const OtherDerived > | cwiseNotEqual (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp< internal::scalar_product_op< Derived ::Scalar, OtherDerived ::Scalar >, const Derived, const OtherDerived > | cwiseProduct (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp< internal::scalar_quotient_op< Scalar >, const Derived, const OtherDerived > | cwiseQuotient (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const CwiseSignReturnType | cwiseSign () const |
const CwiseSqrtReturnType | cwiseSqrt () const |
const internal::eval< Derived >::type | eval () const |
template<typename NType > | |
FixedSegmentReturnType<... >::Type | head (NType n) |
template<typename NType > | |
const ConstFixedSegmentReturnType<... >::Type | head (NType n) const |
This is the const version of head(NType). | |
template<int N> | |
FixedSegmentReturnType< N >::Type | head (Index n=N) |
template<int N> | |
ConstFixedSegmentReturnType< N >::Type | head (Index n=N) const |
This is the const version of head<int>(). | |
const ImagReturnType | imag () const |
NonConstImagReturnType | imag () |
Index | innerSize () const |
InnerVectorReturnType | innerVector (Index outer) |
const ConstInnerVectorReturnType | innerVector (Index outer) const |
InnerVectorsReturnType | innerVectors (Index outerStart, Index outerSize) |
const ConstInnerVectorsReturnType | innerVectors (Index outerStart, Index outerSize) const |
bool | isVector () const |
template<typename NColsType > | |
NColsBlockXpr<... >::Type | leftCols (NColsType n) |
template<typename NColsType > | |
const ConstNColsBlockXpr<... >::Type | leftCols (NColsType n) const |
This is the const version of leftCols(NColsType). | |
template<int N> | |
NColsBlockXpr< N >::Type | leftCols (Index n=N) |
template<int N> | |
ConstNColsBlockXpr< N >::Type | leftCols (Index n=N) const |
This is the const version of leftCols<int>(). | |
template<typename NColsType > | |
NColsBlockXpr<... >::Type | middleCols (Index startCol, NColsType numCols) |
template<typename NColsType > | |
const ConstNColsBlockXpr<... >::Type | middleCols (Index startCol, NColsType numCols) const |
This is the const version of middleCols(Index,NColsType). | |
template<int N> | |
NColsBlockXpr< N >::Type | middleCols (Index startCol, Index n=N) |
template<int N> | |
ConstNColsBlockXpr< N >::Type | middleCols (Index startCol, Index n=N) const |
This is the const version of middleCols<int>(). | |
template<typename NRowsType > | |
NRowsBlockXpr<... >::Type | middleRows (Index startRow, NRowsType n) |
template<typename NRowsType > | |
const ConstNRowsBlockXpr<... >::Type | middleRows (Index startRow, NRowsType n) const |
This is the const version of middleRows(Index,NRowsType). | |
template<int N> | |
NRowsBlockXpr< N >::Type | middleRows (Index startRow, Index n=N) |
template<int N> | |
ConstNRowsBlockXpr< N >::Type | middleRows (Index startRow, Index n=N) const |
This is the const version of middleRows<int>(). | |
template<typename OtherDerived > | |
const CwiseBinaryOp< internal::scalar_boolean_and_op, const Derived, const OtherDerived > | operator && (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
template<typename T > | |
const CwiseBinaryOp< internal::scalar_product_op< Scalar, T >, Derived, Constant< T > > | operator* (const T &scalar) const |
template<typename OtherDerived > | |
const Product< Derived, OtherDerived, AliasFreeProduct > | operator* (const SparseMatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp< sum< Scalar >, const Derived, const OtherDerived > | operator+ (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
const CwiseBinaryOp< difference< Scalar >, const Derived, const OtherDerived > | operator- (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
const NegativeReturnType | operator- () const |
template<typename T > | |
const CwiseBinaryOp< internal::scalar_quotient_op< Scalar, T >, Derived, Constant< T > > | operator/ (const T &scalar) const |
template<typename OtherDerived > | |
const CwiseBinaryOp< internal::scalar_boolean_or_op, const Derived, const OtherDerived > | operator|| (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
Index | outerSize () const |
const SparseView< Derived > | pruned (const Scalar &reference=Scalar(0), const RealScalar &epsilon=NumTraits< Scalar >::dummy_precision()) const |
RealReturnType | real () const |
NonConstRealReturnType | real () |
template<typename NColsType > | |
NColsBlockXpr<... >::Type | rightCols (NColsType n) |
template<typename NColsType > | |
const ConstNColsBlockXpr<... >::Type | rightCols (NColsType n) const |
This is the const version of rightCols(NColsType). | |
template<int N> | |
NColsBlockXpr< N >::Type | rightCols (Index n=N) |
template<int N> | |
ConstNColsBlockXpr< N >::Type | rightCols (Index n=N) const |
This is the const version of rightCols<int>(). | |
RowXpr | row (Index i) |
ConstRowXpr | row (Index i) const |
This is the const version of row(). */. | |
Index | rows () const |
template<typename NType > | |
FixedSegmentReturnType<... >::Type | segment (Index start, NType n) |
template<typename NType > | |
const ConstFixedSegmentReturnType<... >::Type | segment (Index start, NType n) const |
This is the const version of segment(Index,NType). | |
template<int N> | |
FixedSegmentReturnType< N >::Type | segment (Index start, Index n=N) |
template<int N> | |
ConstFixedSegmentReturnType< N >::Type | segment (Index start, Index n=N) const |
This is the const version of segment<int>(Index). | |
Index | size () const |
template<DirectionType Direction> | |
internal::conditional< Direction==Vertical, ColXpr, RowXpr >::type | subVector (Index i) |
template<DirectionType Direction> | |
internal::conditional< Direction==Vertical, ConstColXpr, ConstRowXpr >::type | subVector (Index i) const |
template<DirectionType Direction> | |
EIGEN_CONSTEXPR Index | subVectors () const |
template<typename NType > | |
FixedSegmentReturnType<... >::Type | tail (NType n) |
template<typename NType > | |
const ConstFixedSegmentReturnType<... >::Type | tail (NType n) const |
This is the const version of tail(Index). | |
template<int N> | |
FixedSegmentReturnType< N >::Type | tail (Index n=N) |
template<int N> | |
ConstFixedSegmentReturnType< N >::Type | tail (Index n=N) const |
This is the const version of tail<int>. | |
template<typename NRowsType , typename NColsType > | |
FixedBlockXpr<...,... >::Type | topLeftCorner (NRowsType cRows, NColsType cCols) |
template<typename NRowsType , typename NColsType > | |
const ConstFixedBlockXpr<...,... >::Type | topLeftCorner (NRowsType cRows, NColsType cCols) const |
This is the const version of topLeftCorner(Index, Index). | |
template<int CRows, int CCols> | |
FixedBlockXpr< CRows, CCols >::Type | topLeftCorner () |
template<int CRows, int CCols> | |
const ConstFixedBlockXpr< CRows, CCols >::Type | topLeftCorner () const |
This is the const version of topLeftCorner<int, int>(). | |
template<int CRows, int CCols> | |
FixedBlockXpr< CRows, CCols >::Type | topLeftCorner (Index cRows, Index cCols) |
template<int CRows, int CCols> | |
const ConstFixedBlockXpr< CRows, CCols >::Type | topLeftCorner (Index cRows, Index cCols) const |
This is the const version of topLeftCorner<int, int>(Index, Index). | |
template<typename NRowsType , typename NColsType > | |
FixedBlockXpr<...,... >::Type | topRightCorner (NRowsType cRows, NColsType cCols) |
template<typename NRowsType , typename NColsType > | |
const ConstFixedBlockXpr<...,... >::Type | topRightCorner (NRowsType cRows, NColsType cCols) const |
This is the const version of topRightCorner(NRowsType, NColsType). | |
template<int CRows, int CCols> | |
FixedBlockXpr< CRows, CCols >::Type | topRightCorner () |
template<int CRows, int CCols> | |
const ConstFixedBlockXpr< CRows, CCols >::Type | topRightCorner () const |
This is the const version of topRightCorner<int, int>(). | |
template<int CRows, int CCols> | |
FixedBlockXpr< CRows, CCols >::Type | topRightCorner (Index cRows, Index cCols) |
template<int CRows, int CCols> | |
const ConstFixedBlockXpr< CRows, CCols >::Type | topRightCorner (Index cRows, Index cCols) const |
This is the const version of topRightCorner<int, int>(Index, Index). | |
template<typename NRowsType > | |
NRowsBlockXpr<... >::Type | topRows (NRowsType n) |
template<typename NRowsType > | |
const ConstNRowsBlockXpr<... >::Type | topRows (NRowsType n) const |
This is the const version of topRows(NRowsType). | |
template<int N> | |
NRowsBlockXpr< N >::Type | topRows (Index n=N) |
template<int N> | |
ConstNRowsBlockXpr< N >::Type | topRows (Index n=N) const |
This is the const version of topRows<int>(). | |
SparseSymmetricPermutationProduct< Derived, Upper|Lower > | twistedBy (const PermutationMatrix< Dynamic, Dynamic, StorageIndex > &perm) const |
template<typename CustomUnaryOp > | |
const CwiseUnaryOp< CustomUnaryOp, const Derived > | unaryExpr (const CustomUnaryOp &func=CustomUnaryOp()) const |
Apply a unary operator coefficient-wise. More... | |
template<typename CustomViewOp > | |
const CwiseUnaryView< CustomViewOp, const Derived > | unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const |
![]() | |
EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
Derived & | derived () |
const Derived & | derived () const |
EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
EIGEN_CONSTEXPR Index | size () const EIGEN_NOEXCEPT |
Friends | |
template<typename T > | |
const CwiseBinaryOp< internal::scalar_product_op< T, Scalar >, Constant< T >, Derived > | operator* (const T &scalar, const StorageBaseType &expr) |
typedef internal::traits<Derived>::StorageIndex Eigen::SparseMatrixBase< Derived >::StorageIndex |
The integer type used to store indices within a SparseMatrix. For a SparseMatrix<Scalar,Options,IndexType>
it an alias of the third template parameter IndexType
.
typedef Scalar Eigen::SparseMatrixBase< Derived >::value_type |
The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc.
It is an alias for the Scalar type
anonymous enum |
Enumerator | |
---|---|
RowsAtCompileTime | The number of rows at compile-time. This is just a copy of the value provided by the Derived type. If a value is not known at compile-time, it is set to the Dynamic constant. |
ColsAtCompileTime | The number of columns at compile-time. This is just a copy of the value provided by the Derived type. If a value is not known at compile-time, it is set to the Dynamic constant. |
SizeAtCompileTime | This is equal to the number of coefficients, i.e. the number of rows times the number of columns, or to Dynamic if this is not known at compile-time.
|
IsVectorAtCompileTime | This is set to true if either the number of rows or the number of columns is known at compile-time to be equal to 1. Indeed, in that case, we are dealing with a column-vector (if there is only one column) or with a row-vector (if there is only one row). |
NumDimensions | This value is equal to Tensor::NumDimensions, i.e. 0 for scalars, 1 for vectors, and 2 for matrices. |
Flags | This stores expression Flags flags which may or may not be inherited by new expressions constructed from this one. See the list of flags. |
|
inline |
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:
(0.68,0.271) (0.823,-0.967) (-0.444,-0.687) (-0.27,0.998) (-0.211,0.435) (-0.605,-0.514) (0.108,-0.198) (0.0268,-0.563) (0.566,-0.717) (-0.33,-0.726) (-0.0452,-0.74) (0.904,0.0259) (0.597,0.214) (0.536,0.608) (0.258,-0.782) (0.832,0.678)
|
inline |
*this
with either dynamic or fixed sizes.startRow | the first row in the block |
startCol | the first column in the block |
blockRows | number of rows in the block, specified at either run-time or compile-time |
blockCols | number of columns in the block, specified at either run-time or compile-time |
NRowsType | the type of the value handling the number of rows in the block, typically Index. |
NColsType | the type of the value handling the number of columns in the block, typically Index. |
Example using runtime (aka dynamic) sizes:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.block(1, 1, 2, 2): -6 1 -3 0 Now the matrix m is: 7 9 -5 -3 -2 0 0 0 6 0 0 9 6 6 3 9
New in Eigen 3.4.:
The number of rows blockRows and columns blockCols can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. In the later case, n
plays the role of a runtime fallback value in case N
equals Eigen::Dynamic. Here is an example with a fixed number of rows NRows
and dynamic number of columns cols:
This function thus fully covers the features offered by the following overloads block<NRows,NCols>(Index, Index), and block<NRows,NCols>(Index, Index, Index, Index) that are thus obsolete. Indeed, this generic version avoids redundancy, it preserves the argument order, and prevents the need to rely on the template keyword in templated code.
but with less redundancy and more consistency as it does not modify the argument order and seamlessly enable hybrid fixed/dynamic sizes.
|
inline |
*this
.The template parameters NRows and NCols 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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.block<2,2>(1,1): -6 1 -3 0 Now the matrix m is: 7 9 -5 -3 -2 0 0 0 6 0 0 9 6 6 3 9
|
inline |
*this
.NRows | number of rows in block as specified at compile-time |
NCols | 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 NRows unless NRows is Dynamic, and the same for the number of columns.
Example:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is the block: -6 1 0 -3 0 9 Now the matrix m is: 7 9 -5 -3 -2 0 0 0 6 0 0 0 6 6 3 9
|
inline |
*this
with either dynamic or fixed sizes.cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
NRowsType | the type of the value handling the number of rows in the block, typically Index. |
NColsType | the type of the value handling the number of columns in the block, typically Index. |
Example:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomLeftCorner(2, 2): 6 -3 6 6 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 0 0 0 9 0 0 3 9
The number of rows blockRows and columns blockCols can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomLeftCorner<2,2>(): 6 -3 6 6 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 0 0 0 9 0 0 3 9
|
inline |
*this
.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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomLeftCorner<2,Dynamic>(2,2): 6 -3 6 6 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 0 0 0 9 0 0 3 9
|
inline |
*this
with either dynamic or fixed sizes.cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
NRowsType | the type of the value handling the number of rows in the block, typically Index. |
NColsType | the type of the value handling the number of columns in the block, typically Index. |
Example:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomRightCorner(2, 2): 0 9 3 9 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 6 -3 0 0 6 6 0 0
The number of rows blockRows and columns blockCols can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomRightCorner<2,2>(): 0 9 3 9 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 6 -3 0 0 6 6 0 0
|
inline |
*this
.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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomRightCorner<2,Dynamic>(2,2): 0 9 3 9 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 6 -3 0 0 6 6 0 0
|
inline |
*this
.n | the number of rows in the block |
NRowsType | the type of the value handling the number of rows in the block, typically Index. |
Example:
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.bottomRows(2): 6 -3 0 9 6 6 3 9 Now the array a is: 7 9 -5 -3 -2 -6 1 0 0 0 0 0 0 0 0 0
The number of rows n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.bottomRows<2>(): 6 -3 0 9 6 6 3 9 Now the array a is: 7 9 -5 -3 -2 -6 1 0 0 0 0 0 0 0 0 0
|
inline |
*this
with the Scalar type casted to NewScalar.The template parameter NewScalar is the type we are casting the scalars to.
This method does not change the sparsity of *this
: the conversion function is applied to explicitly stored coefficients only.
|
inline |
*this
. Note that the numbering starts at 0.Example:
Output:
1 4 0 0 5 0 0 6 1
|
inline |
|
inline |
*this
.This method does not change the sparsity of *this
: the complex conjugate is applied to explicitly stored coefficients only.
|
inline |
*this
if Cond==true, returns derived() otherwise.This method does not change the sparsity of *this
: the complex conjugate is applied to explicitly stored coefficients only.
|
inline |
*this
Example:
Output:
2 4 6 5 1 0
This method does not change the sparsity of *this
: the absolute value is applied to explicitly stored coefficients only.
|
inline |
*this
Example:
Output:
4 16 36 25 1 0
This method does not change the sparsity of *this
: the squared absolute value is applied to explicitly stored coefficients only.
|
inline |
*this
Example:
Output:
(-0.211,0.68) (-0.605,0.823) (0.108,-0.444) (0.597,0.566) (0.536,-0.33) (0.258,-0.0452) 1.87 2.2 -1.33 0.759 -0.551 -0.174
This method does not change the sparsity of *this
: the arg is applied to explicitly stored coefficients only.
|
inline |
Example:
Output:
Comparing m with identity matrix: 1 1 0 1 Number of coefficients that are equal: 3
|
inline |
*this
and a scalar s
|
inline |
Example:
Output:
0.5 2 1 0.333 4 1
This method does not change the sparsity of *this
: the inverse is applied to explicitly stored coefficients only.
|
inline |
Example:
Output:
4 3 4
|
inline |
|
inline |
Example:
Output:
2 2 3
|
inline |
|
inline |
Example:
Output:
Comparing m with identity matrix: 0 0 1 0 Number of coefficients that are not equal: 1
|
inline |
Example:
Output:
a: 7 6 -3 -2 9 6 6 -6 -5 b: 1 -3 9 0 0 3 3 9 5 c: 7 -18 -27 0 0 18 18 -54 -25
|
inline |
Example:
Output:
0.5 1.5 1.33
|
inline |
Example:
Output:
1 -1 1 -1 1 0
This method does not change the sparsity of *this
: the sign function is applied to explicitly stored coefficients only.
|
inline |
Example:
Output:
1 1.41 2
This method does not change the sparsity of *this
: the square-root is applied to explicitly stored coefficients only.
|
inline |
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.
|
inline |
*this
with either dynamic or fixed sizes.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 |
NType | the type of the value handling the number of coefficients in the segment, typically Index. |
Example:
Output:
Here is the vector v: 7 -2 6 6 Here is v.head(2): 7 -2 Now the vector v is: 0 0 6 6
The number of coefficients n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*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 |
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: 7 -2 6 6 Here is v.head(2): 7 -2 Now the vector v is: 0 0 6 6
|
inline |
*this
.This method does not change the sparsity of *this
: the imaginary part function is applied to explicitly stored coefficients only.
|
inline |
*this
.This method does not change the sparsity of *this
: the imaginary part function is applied to explicitly stored coefficients only.
|
inline |
|
inline |
*this
if *this
is col-major (resp. row-major).
|
inline |
*this
if *this
is col-major (resp. row-major). Read-only.
|
inline |
*this
if *this
is col-major (resp. row-major).
|
inline |
*this
if *this
is col-major (resp. row-major). Read-only.
|
inline |
|
inline |
*this
.n | the number of columns in the block |
NColsType | the type of the value handling the number of columns in the block, typically Index. |
Example:
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.leftCols(2): 7 9 -2 -6 6 -3 6 6 Now the array a is: 0 0 -5 -3 0 0 1 0 0 0 0 9 0 0 3 9
The number of columns n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.leftCols<2>(): 7 9 -2 -6 6 -3 6 6 Now the array a is: 0 0 -5 -3 0 0 1 0 0 0 0 9 0 0 3 9
|
inline |
*this
.startCol | the index of the first column in the block |
numCols | the number of columns in the block |
NColsType | the type of the value handling the number of columns in the block, typically Index. |
Example:
Output:
A = 7 -6 0 9 -10 -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6 9 1 9 2 -7 A(1..3,:) = -6 0 9 -3 3 3 6 -3 5 -5 0 -8 1 9 2
The number of columns n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.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 = 7 -6 0 9 -10 -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6 9 1 9 2 -7 A(:,1..3) = -6 0 9 -3 3 3 6 -3 5 -5 0 -8 1 9 2
|
inline |
*this
.startRow | the index of the first row in the block |
n | the number of rows in the block |
NRowsType | the type of the value handling the number of rows in the block, typically Index. |
Example:
Output:
A = 7 -6 0 9 -10 -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6 9 1 9 2 -7 A(2..3,:) = 6 6 -3 5 -8 6 -5 0 -8 6
The number of rows n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.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 = 7 -6 0 9 -10 -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6 9 1 9 2 -7 A(1..3,:) = -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6
|
inline |
*this
and other Example:
Output:
0 0 0
const CwiseBinaryOp<internal::scalar_product_op<Scalar,T>,Derived,Constant<T> > Eigen::SparseMatrixBase< Derived >::operator* | ( | const T & | scalar | ) | const |
*this
scaled by the scalar factor scalar T | is the scalar type of scalar. It must be compatible with the scalar type of the given expression. |
|
inline |
ref
is a meaningful non zero reference value. const CwiseBinaryOp< sum <Scalar>, const Derived, const OtherDerived> Eigen::SparseMatrixBase< Derived >::operator+ | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other | ) | const |
*this
and other const CwiseBinaryOp< difference <Scalar>, const Derived, const OtherDerived> Eigen::SparseMatrixBase< Derived >::operator- | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other | ) | const |
*this
and other
|
inline |
*this
This method does not change the sparsity of *this
: the opposite is applied to explicitly stored coefficients only.
const CwiseBinaryOp<internal::scalar_quotient_op<Scalar,T>,Derived,Constant<T> > Eigen::SparseMatrixBase< Derived >::operator/ | ( | const T & | scalar | ) | const |
*this
divided by the scalar value scalar T | is the scalar type of scalar. It must be compatible with the scalar type of the given expression. |
|
inline |
*this
and other Example:
Output:
1 0 1
|
inline |
|
inline |
*this
with values smaller than reference * epsilon removed.This method is typically used in conjunction with the product of two sparse matrices to automatically prune the smallest values as follows:
where ref
is a meaningful non zero reference value.
|
inline |
*this
.This method does not change the sparsity of *this
: the real part function is applied to explicitly stored coefficients only.
|
inline |
*this
.This method does not change the sparsity of *this
: the real part function is applied to explicitly stored coefficients only.
|
inline |
*this
.n | the number of columns in the block |
NColsType | the type of the value handling the number of columns in the block, typically Index. |
Example:
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.rightCols(2): -5 -3 1 0 0 9 3 9 Now the array a is: 7 9 0 0 -2 -6 0 0 6 -3 0 0 6 6 0 0
The number of columns n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.rightCols<2>(): -5 -3 1 0 0 9 3 9 Now the array a is: 7 9 0 0 -2 -6 0 0 6 -3 0 0 6 6 0 0
|
inline |
*this
. Note that the numbering starts at 0.Example:
Output:
1 0 0 4 5 6 0 0 1
|
inline |
|
inline |
*this
with either dynamic or fixed sizes.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 |
NType | the type of the value handling the number of coefficients in the segment, typically Index. |
Example:
Output:
Here is the vector v: 7 -2 6 6 Here is v.segment(1, 2): -2 6 Now the vector v is: 7 0 0 6
The number of coefficients n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*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: 7 -2 6 6 Here is v.segment<2>(1): -2 6 Now the vector v is: 7 -2 0 0
|
inline |
|
inline |
Direction
|
inline |
This is the const version of subVector(Index)
|
inline |
Direction
|
inline |
*this
with either dynamic or fixed sizes.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 |
NType | the type of the value handling the number of coefficients in the segment, typically Index. |
Example:
Output:
Here is the vector v: 7 -2 6 6 Here is v.tail(2): 6 6 Now the vector v is: 7 -2 0 0
The number of coefficients n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*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 |
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: 7 -2 6 6 Here is v.tail(2): 6 6 Now the vector v is: 7 -2 0 0
|
inline |
*this
with either dynamic or fixed sizes.cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
NRowsType | the type of the value handling the number of rows in the block, typically Index. |
NColsType | the type of the value handling the number of columns in the block, typically Index. |
Example:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topLeftCorner(2, 2): 7 9 -2 -6 Now the matrix m is: 0 0 -5 -3 0 0 1 0 6 -3 0 9 6 6 3 9
The number of rows blockRows and columns blockCols can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topLeftCorner<2,2>(): 7 9 -2 -6 Now the matrix m is: 0 0 -5 -3 0 0 1 0 6 -3 0 9 6 6 3 9
|
inline |
*this
.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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topLeftCorner<2,Dynamic>(2,2): 7 9 -2 -6 Now the matrix m is: 0 0 -5 -3 0 0 1 0 6 -3 0 9 6 6 3 9
|
inline |
*this
with either dynamic or fixed sizes.cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
NRowsType | the type of the value handling the number of rows in the block, typically Index. |
NColsType | the type of the value handling the number of columns in the block, typically Index. |
Example with dynamic sizes:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topRightCorner(2, 2): -5 -3 1 0 Now the matrix m is: 7 9 0 0 -2 -6 0 0 6 -3 0 9 6 6 3 9
The number of rows blockRows and columns blockCols can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.CRows | the number of rows in the corner |
CCols | the number of columns in the corner |
Example:
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topRightCorner<2,2>(): -5 -3 1 0 Now the matrix m is: 7 9 0 0 -2 -6 0 0 6 -3 0 9 6 6 3 9
|
inline |
*this
.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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topRightCorner<2,Dynamic>(2,2): -5 -3 1 0 Now the matrix m is: 7 9 0 0 -2 -6 0 0 6 -3 0 9 6 6 3 9
|
inline |
*this
.n | the number of rows in the block |
NRowsType | the type of the value handling the number of rows in the block, typically Index. |
Example:
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.topRows(2): 7 9 -5 -3 -2 -6 1 0 Now the array a is: 0 0 0 0 0 0 0 0 6 -3 0 9 6 6 3 9
The number of rows n can also be specified at compile-time by passing Eigen::fix<N>, or Eigen::fix<N>(n) as arguments. See block() for the details.
|
inline |
*this
.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: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.topRows<2>(): 7 9 -5 -3 -2 -6 1 0 Now the array a is: 0 0 0 0 0 0 0 0 6 -3 0 9 6 6 3 9
|
inline |
*this
|
inline |
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:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.68 0.823 0 0 0 0 0.108 0.0268 0.566 0 0 0.904 0.597 0.536 0.258 0.832
Genuine functors allow for more possibilities, for instance it may contain a state.
Example:
Output:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.5 0.5 -0.444 -0.27 -0.211 -0.5 0.108 0.0268 0.5 -0.33 -0.0452 0.5 0.5 0.5 0.258 0.5
This method does not change the sparsity of *this
: the unary function is applied to explicitly stored coefficients only.
|
inline |
The template parameter CustomUnaryOp is the type of the functor of the custom unary operator.
Example:
Output:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.5 0.5 -0.444 -0.27 -0.211 -0.5 0.108 0.0268 0.5 -0.33 -0.0452 0.5 0.5 0.5 0.258 0.5
This method does not change the sparsity of *this
: the unary function is applied to explicitly stored coefficients only.
|
friend |
T | is the scalar type of scalar. It must be compatible with the scalar type of the given expression. |