A versatible sparse matrix representation. More...
Inheritance diagram for SparseMatrix< _Scalar, _Options, _Index >:Classes | |
| class | SingletonVector |
Public Types | |
| enum | |
| enum | { Options } |
| typedef internal::conditional < NumTraits< Scalar > ::IsComplex, CwiseUnaryOp < internal::scalar_conjugate_op < Scalar >, Eigen::Transpose < const SparseMatrix< _Scalar, _Options, _Index > > >, Transpose< const SparseMatrix< _Scalar, _Options, _Index > > >::type | AdjointReturnType |
| typedef EigenBase < SparseMatrix< _Scalar, _Options, _Index > > | Base |
| typedef internal::traits < SparseMatrix< _Scalar, _Options, _Index > >::Index | Index |
| typedef MappedSparseMatrix < Scalar, Flags > | Map |
| typedef internal::add_const_on_value_type_if_arithmetic < typename internal::packet_traits < Scalar >::type >::type | PacketReturnType |
| typedef internal::packet_traits < Scalar >::type | PacketScalar |
| typedef SparseMatrix< Scalar, Flags &RowMajorBit?RowMajor:ColMajor > | PlainObject |
| typedef internal::traits < SparseMatrix< _Scalar, _Options, _Index > >::Scalar | Scalar |
| typedef internal::CompressedStorage < Scalar, Index > | Storage |
| typedef SparseMatrixBase | StorageBaseType |
| typedef internal::traits < SparseMatrix< _Scalar, _Options, _Index > >::StorageKind | StorageKind |
Public Member Functions | |
| void | addTo (Dest &dst) const |
| const AdjointReturnType | adjoint () const |
| void | applyThisOnTheLeft (Dest &dst) const |
| void | applyThisOnTheRight (Dest &dst) const |
| const CwiseBinaryOp < CustomBinaryOp, const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | binaryExpr (const Eigen::SparseMatrixBase< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) 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) |
| SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, 1 > | col (Index j) |
| const SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, 1 > | col (Index j) const |
| Index | cols () const |
| ConjugateReturnType | conjugate () const |
| SparseMatrix< _Scalar, _Options, _Index > & | const_cast_derived () const |
| const SparseMatrix< _Scalar, _Options, _Index > & | const_derived () const |
| 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 (operator-)(const Eigen |
| const | CwiseBinaryOp (operator+)(const Eigen |
| const CwiseBinaryOp < std::equal_to< Scalar > , const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | cwiseEqual (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
| const CwiseUnaryOp < std::binder1st < std::equal_to< Scalar > >, const SparseMatrix < _Scalar, _Options, _Index > > | 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 internal::traits < SparseMatrix< _Scalar, _Options, _Index > >::Scalar, typename internal::traits < OtherDerived >::Scalar > , const SparseMatrix< _Scalar, _Options, _Index >, const OtherDerived > | cwiseProduct (const Eigen::SparseMatrixBase< OtherDerived > &other) const |
| const EIGEN_SPARSE_CWISE_PRODUCT_RETURN_TYPE | cwiseProduct (const MatrixBase< 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 |
| Storage & | data () |
| const Storage & | data () const |
| SparseMatrix< _Scalar, _Options, _Index > & | derived () |
| const SparseMatrix< _Scalar, _Options, _Index > & | derived () const |
| const Diagonal< const SparseMatrix > | diagonal () const |
| Scalar | dot (const MatrixBase< OtherDerived > &other) const |
| Scalar | dot (const SparseMatrixBase< OtherDerived > &other) const |
| const internal::eval < SparseMatrix< _Scalar, _Options, _Index > >::type | eval () const |
| void | evalTo (Dest &dst) const |
| void | evalTo (MatrixBase< DenseDerived > &dst) const |
| void | finalize () |
| const ImagReturnType | imag () const |
| NonConstImagReturnType | imag () |
| const Index * | innerIndexPtr () const |
| Index * | innerIndexPtr () |
| const Index * | innerNonZeroPtr () const |
| Index * | innerNonZeroPtr () |
| Index | innerSize () const |
| SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, 1 > | innerVector (Index outer) |
| const SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, 1 > | innerVector (Index outer) const |
| SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | innerVectors (Index outerStart, Index outerSize) |
| const SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | innerVectors (Index outerStart, Index outerSize) const |
| EIGEN_DONT_INLINE Scalar & | insert (Index row, Index col) |
| Scalar & | insertBack (Index row, Index col) |
| Scalar & | insertBackByOuterInner (Index outer, Index inner) |
| Scalar & | insertBackByOuterInnerUnordered (Index outer, Index inner) |
| Scalar & | insertBackUncompressed (Index row, Index col) |
| EIGEN_DONT_INLINE Scalar & | insertByOuterInner (Index j, Index i) |
| bool | isApprox (const SparseMatrixBase< OtherDerived > &other, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const |
| bool | isApprox (const MatrixBase< OtherDerived > &other, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const |
| bool | isCompressed () const |
| bool | isRValue () const |
| bool | isVector () const |
| void | makeCompressed () |
| SparseMatrix< _Scalar, _Options, _Index > & | markAsRValue () |
| SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | middleCols (Index start, Index size) |
| const SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | middleCols (Index start, Index size) const |
| SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | middleRows (Index start, Index size) |
| const SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | middleRows (Index start, Index size) const |
| Index | nonZeros () const |
| RealScalar | norm () const |
| const ScalarMultipleReturnType | operator* (const Scalar &scalar) const |
| const ScalarMultipleReturnType | operator* (const RealScalar &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 SparseSparseProductReturnType < SparseMatrix< _Scalar, _Options, _Index > , OtherDerived >::Type | operator* (const SparseMatrixBase< OtherDerived > &other) const |
| const SparseDiagonalProduct < SparseMatrix< _Scalar, _Options, _Index > , OtherDerived > | operator* (const DiagonalBase< OtherDerived > &other) const |
| const SparseDenseProductReturnType < SparseMatrix< _Scalar, _Options, _Index > , OtherDerived >::Type | operator* (const MatrixBase< OtherDerived > &other) const |
| SparseMatrix< _Scalar, _Options, _Index > & | operator*= (const Scalar &other) |
| SparseMatrix< _Scalar, _Options, _Index > & | operator*= (const SparseMatrixBase< OtherDerived > &other) |
| SparseMatrix< _Scalar, _Options, _Index > & | operator+= (const SparseMatrixBase< OtherDerived > &other) |
| const CwiseUnaryOp < internal::scalar_opposite_op < typename internal::traits < SparseMatrix< _Scalar, _Options, _Index > >::Scalar > , const SparseMatrix< _Scalar, _Options, _Index > > | operator- () const |
| SparseMatrix< _Scalar, _Options, _Index > & | operator-= (const SparseMatrixBase< OtherDerived > &other) |
| const CwiseUnaryOp < internal::scalar_quotient1_op < typename internal::traits < SparseMatrix< _Scalar, _Options, _Index > >::Scalar > , const SparseMatrix< _Scalar, _Options, _Index > > | operator/ (const Scalar &scalar) const |
| SparseMatrix< _Scalar, _Options, _Index > & | operator/= (const Scalar &other) |
| SparseMatrix & | operator= (const SparseMatrix &other) |
| template<typename OtherDerived > | |
| EIGEN_DONT_INLINE SparseMatrix & | operator= (const SparseMatrixBase< OtherDerived > &other) |
| const Index * | outerIndexPtr () const |
| Index * | outerIndexPtr () |
| Index | outerSize () const |
| void | prune (Scalar reference, 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) |
| void | resizeNonZeros (Index size) |
| SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, 1 > | row (Index i) |
| const SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, 1 > | row (Index i) const |
| Index | rows () const |
| const SparseSelfAdjointView < SparseMatrix< _Scalar, _Options, _Index >, UpLo > | selfadjointView () const |
| SparseSelfAdjointView < SparseMatrix< _Scalar, _Options, _Index >, UpLo > | selfadjointView () |
| template<typename InputIterators > | |
| void | setFromTriplets (const InputIterators &begin, const InputIterators &end) |
| void | setZero () |
| Index | size () const |
| SparseMatrix () | |
| SparseMatrix (Index rows, Index cols) | |
| template<typename OtherDerived > | |
| SparseMatrix (const SparseMatrixBase< OtherDerived > &other) | |
| SparseMatrix (const SparseMatrix &other) | |
| RealScalar | squaredNorm () const |
| void | startVec (Index outer) |
| SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | subcols (Index start, Index size) |
| const SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | subcols (Index start, Index size) const |
| SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | subrows (Index start, Index size) |
| const SparseInnerVectorSet < SparseMatrix< _Scalar, _Options, _Index >, Dynamic > | subrows (Index start, Index size) const |
| void | subTo (Dest &dst) const |
| Scalar | sum () const |
| void | sumupDuplicates () |
| void | swap (SparseMatrix &other) |
| Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime > | toDense () const |
| Transpose< SparseMatrix < _Scalar, _Options, _Index > > | transpose () |
| const Transpose< const SparseMatrix< _Scalar, _Options, _Index > > | transpose () const |
| const SparseTriangularView < SparseMatrix< _Scalar, _Options, _Index >, Mode > | triangularView () 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. | |
| const CwiseUnaryView < CustomViewOp, const SparseMatrix< _Scalar, _Options, _Index > > | unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const |
| const Scalar * | valuePtr () const |
| Scalar * | valuePtr () |
| ~SparseMatrix () | |
Protected Types | |
| typedef SparseMatrix< Scalar,(Flags &~RowMajorBit)|(IsRowMajor?RowMajorBit:0)> | TransposedSparseMatrix |
Protected Member Functions | |
| SparseMatrix< _Scalar, _Options, _Index > & | assign (const OtherDerived &other) |
| void | assignGeneric (const OtherDerived &other) |
| template<typename Other > | |
| void | initAssignment (const Other &other) |
| Eigen::Map< Matrix< Index, Dynamic, 1 > > | innerNonZeros () |
| const Eigen::Map< const Matrix < Index, Dynamic, 1 > > | innerNonZeros () const |
| EIGEN_DONT_INLINE Scalar & | insertCompressed (Index row, Index col) |
| EIGEN_DONT_INLINE Scalar & | insertUncompressed (Index row, Index col) |
| template<class SizesType > | |
| void | reserveInnerVectors (const SizesType &reserveSizes) |
Protected Attributes | |
| Storage | m_data |
| Index * | m_innerNonZeros |
| Index | m_innerSize |
| bool | m_isRValue |
| Index * | m_outerIndex |
| Index | m_outerSize |
Friends | |
| const ScalarMultipleReturnType | operator* (const Scalar &scalar, const StorageBaseType &matrix) |
| const CwiseUnaryOp < internal::scalar_multiple2_op < Scalar, std::complex< Scalar > >, const SparseMatrix < _Scalar, _Options, _Index > > | operator* (const std::complex< Scalar > &scalar, const StorageBaseType &matrix) |
| const SparseDiagonalProduct < OtherDerived, SparseMatrix < _Scalar, _Options, _Index > > | operator* (const DiagonalBase< OtherDerived > &lhs, const SparseMatrixBase &rhs) |
| const DenseSparseProductReturnType < OtherDerived, SparseMatrix < _Scalar, _Options, _Index > >::Type | operator* (const MatrixBase< OtherDerived > &lhs, const SparseMatrix< _Scalar, _Options, _Index > &rhs) |
| std::ostream & | operator<< (std::ostream &s, const SparseMatrixBase &m) |
| std::ostream & | operator<< (std::ostream &s, const SparseMatrix &m) |
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 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.
typedef internal::conditional<NumTraits<Scalar>::IsComplex, CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, Eigen::Transpose<const SparseMatrix< _Scalar, _Options, _Index > > >, Transpose<const SparseMatrix< _Scalar, _Options, _Index > > >::type AdjointReturnType [inherited] |
typedef EigenBase<SparseMatrix< _Scalar, _Options, _Index > > Base [inherited] |
typedef internal::traits<SparseMatrix< _Scalar, _Options, _Index > >::Index Index [inherited] |
Reimplemented from EigenBase< SparseMatrix< _Scalar, _Options, _Index > >.
| typedef MappedSparseMatrix<Scalar,Flags> Map |
typedef internal::add_const_on_value_type_if_arithmetic< typename internal::packet_traits<Scalar>::type >::type PacketReturnType [inherited] |
typedef internal::packet_traits<Scalar>::type PacketScalar [inherited] |
typedef SparseMatrix<Scalar, Flags&RowMajorBit ? RowMajor : ColMajor> PlainObject [inherited] |
typedef internal::traits<SparseMatrix< _Scalar, _Options, _Index > >::Scalar Scalar [inherited] |
typedef SparseMatrixBase StorageBaseType [inherited] |
typedef internal::traits<SparseMatrix< _Scalar, _Options, _Index > >::StorageKind StorageKind [inherited] |
Reimplemented from EigenBase< SparseMatrix< _Scalar, _Options, _Index > >.
typedef SparseMatrix<Scalar,(Flags&~RowMajorBit)|(IsRowMajor?RowMajorBit:0)> TransposedSparseMatrix [protected] |
anonymous enum [inherited] |
| SparseMatrix | ( | ) | [inline] |
Default constructor yielding an empty 0 x 0 matrix
| SparseMatrix | ( | Index | rows, |
| Index | cols | ||
| ) | [inline] |
Constructs a rows x cols empty matrix
| SparseMatrix | ( | const SparseMatrixBase< OtherDerived > & | other | ) | [inline] |
Constructs a sparse matrix from the sparse expression other
| SparseMatrix | ( | const SparseMatrix< _Scalar, _Options, _Index > & | other | ) | [inline] |
Copy constructor (it performs a deep copy)
| ~SparseMatrix | ( | ) | [inline] |
Destructor
| void addTo | ( | Dest & | dst | ) | const [inline, inherited] |
| const AdjointReturnType adjoint | ( | ) | const [inline, inherited] |
| void applyThisOnTheLeft | ( | Dest & | dst | ) | const [inline, inherited] |
| void applyThisOnTheRight | ( | Dest & | dst | ) | const [inline, inherited] |
| SparseMatrix< _Scalar, _Options, _Index > & assign | ( | const OtherDerived & | other | ) | [inline, protected, inherited] |
| void assignGeneric | ( | const OtherDerived & | other | ) | [inline, protected, inherited] |
| const CwiseBinaryOp<CustomBinaryOp, const SparseMatrix< _Scalar, _Options, _Index > , const OtherDerived> binaryExpr | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other, |
| const CustomBinaryOp & | func = CustomBinaryOp() |
||
| ) | const [inline, inherited] |
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:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; // define a custom template binary functor template<typename Scalar> struct MakeComplexOp { EIGEN_EMPTY_STRUCT_CTOR(MakeComplexOp) typedef complex<Scalar> result_type; complex<Scalar> operator()(const Scalar& a, const Scalar& b) const { return complex<Scalar>(a,b); } }; int main(int, char**) { Matrix4d m1 = Matrix4d::Random(), m2 = Matrix4d::Random(); cout << m1.binaryExpr(m2, MakeComplexOp<double>()) << endl; return 0; }
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)
| 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 [inline, inherited] |
The template parameter NewScalar is the type we are casting the scalars to.
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.
| SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> col | ( | Index | j | ) | [inherited] |
*this. For column-major matrix only. | const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> col | ( | Index | j | ) | const [inherited] |
*this. For column-major matrix only. (read-only version) | Index cols | ( | void | ) | const [inline] |
Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
| ConjugateReturnType conjugate | ( | ) | const [inline, inherited] |
*this.| SparseMatrix< _Scalar, _Options, _Index > & const_cast_derived | ( | ) | const [inline, inherited] |
| const SparseMatrix< _Scalar, _Options, _Index > & const_derived | ( | ) | const [inline, inherited] |
| const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > > cwiseAbs | ( | ) | const [inline, inherited] |
*this Example:
MatrixXd m(2,3); m << 2, -4, 6, -5, 1, 0; cout << m.cwiseAbs() << endl;
Output:
2 4 6 5 1 0
| const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > > cwiseAbs2 | ( | ) | const [inline, inherited] |
*this Example:
MatrixXd m(2,3); m << 2, -4, 6, -5, 1, 0; cout << m.cwiseAbs2() << endl;
Output:
4 16 36 25 1 0
| const CwiseBinaryOp | ( | operator- | ) | const [inline, inherited] |
*this and other | const CwiseBinaryOp | ( | operator+ | ) | const [inline, inherited] |
*this and other | const CwiseBinaryOp<std::equal_to<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > , const OtherDerived> cwiseEqual | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
MatrixXi m(2,2); m << 1, 0, 1, 1; cout << "Comparing m with identity matrix:" << endl; cout << m.cwiseEqual(MatrixXi::Identity(2,2)) << endl; int count = m.cwiseEqual(MatrixXi::Identity(2,2)).count(); cout << "Number of coefficients that are equal: " << count << endl;
Output:
Comparing m with identity matrix: 1 1 0 1 Number of coefficients that are equal: 3
| const CwiseUnaryOp<std::binder1st<std::equal_to<Scalar> >, const SparseMatrix< _Scalar, _Options, _Index > > cwiseEqual | ( | const Scalar & | s | ) | const [inline, inherited] |
*this and a scalar s | const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > > cwiseInverse | ( | ) | const [inline, inherited] |
Example:
MatrixXd m(2,3); m << 2, 0.5, 1, 3, 0.25, 1; cout << m.cwiseInverse() << endl;
Output:
0.5 2 1 0.333 4 1
| const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > , const OtherDerived> cwiseMax | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
Vector3d v(2,3,4), w(4,2,3); cout << v.cwiseMax(w) << endl;
Output:
4 3 4
| const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > , const ConstantReturnType> cwiseMax | ( | const Scalar & | other | ) | const [inline, inherited] |
| const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > , const OtherDerived> cwiseMin | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
Vector3d v(2,3,4), w(4,2,3); cout << v.cwiseMin(w) << endl;
Output:
2 2 3
| const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > , const ConstantReturnType> cwiseMin | ( | const Scalar & | other | ) | const [inline, inherited] |
| const CwiseBinaryOp<std::not_equal_to<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > , const OtherDerived> cwiseNotEqual | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
MatrixXi m(2,2); m << 1, 0, 1, 1; cout << "Comparing m with identity matrix:" << endl; cout << m.cwiseNotEqual(MatrixXi::Identity(2,2)) << endl; int count = m.cwiseNotEqual(MatrixXi::Identity(2,2)).count(); cout << "Number of coefficients that are not equal: " << count << endl;
Output:
Comparing m with identity matrix: 0 0 1 0 Number of coefficients that are not equal: 1
| const CwiseBinaryOp< internal::scalar_product_op< typename internal::traits< SparseMatrix< _Scalar, _Options, _Index > >::Scalar, typename internal::traits< OtherDerived >::Scalar >, const SparseMatrix< _Scalar, _Options, _Index > , const OtherDerived > cwiseProduct | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
Matrix3i a = Matrix3i::Random(), b = Matrix3i::Random(); Matrix3i c = a.cwiseProduct(b); cout << "a:\n" << a << "\nb:\n" << b << "\nc:\n" << c << endl;
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
| const EIGEN_SPARSE_CWISE_PRODUCT_RETURN_TYPE cwiseProduct | ( | const MatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
| const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > , const OtherDerived> cwiseQuotient | ( | const Eigen::SparseMatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
Vector3d v(2,3,4), w(4,2,3); cout << v.cwiseQuotient(w) << endl;
Output:
0.5 1.5 1.33
| const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const SparseMatrix< _Scalar, _Options, _Index > > cwiseSqrt | ( | ) | const [inline, inherited] |
Example:
Vector3d v(1,2,4); cout << v.cwiseSqrt() << endl;
Output:
1 1.41 2
| Storage& data | ( | ) | [inline] |
| const Storage& data | ( | ) | const [inline] |
| SparseMatrix< _Scalar, _Options, _Index > & derived | ( | ) | [inline, inherited] |
| const SparseMatrix< _Scalar, _Options, _Index > & derived | ( | ) | const [inline, inherited] |
| const Diagonal<const SparseMatrix> diagonal | ( | ) | const [inline] |
| Scalar dot | ( | const MatrixBase< OtherDerived > & | other | ) | const [inherited] |
| Scalar dot | ( | const SparseMatrixBase< OtherDerived > & | other | ) | const [inherited] |
| const internal::eval<SparseMatrix< _Scalar, _Options, _Index > >::type eval | ( | ) | const [inline, inherited] |
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.
| void evalTo | ( | Dest & | dst | ) | const [inline, inherited] |
| void evalTo | ( | MatrixBase< DenseDerived > & | dst | ) | const [inline, inherited] |
| void finalize | ( | ) | [inline] |
| const ImagReturnType imag | ( | ) | const [inline, inherited] |
*this.| NonConstImagReturnType imag | ( | ) | [inline, inherited] |
*this.| void initAssignment | ( | const Other & | other | ) | [inline, protected] |
| const Index* innerIndexPtr | ( | ) | const [inline] |
| Index* innerIndexPtr | ( | ) | [inline] |
| const Index* innerNonZeroPtr | ( | ) | const [inline] |
| Index* innerNonZeroPtr | ( | ) | [inline] |
| Eigen::Map<Matrix<Index,Dynamic,1> > innerNonZeros | ( | ) | [inline, protected] |
| const Eigen::Map<const Matrix<Index,Dynamic,1> > innerNonZeros | ( | ) | const [inline, protected] |
| Index innerSize | ( | ) | const [inline] |
Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
| SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> innerVector | ( | Index | outer | ) | [inherited] |
*this if *this is col-major (resp. row-major). | const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> innerVector | ( | Index | outer | ) | const [inherited] |
*this if *this is col-major (resp. row-major). Read-only. | SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> innerVectors | ( | Index | outerStart, |
| Index | outerSize | ||
| ) | [inherited] |
*this if *this is col-major (resp. row-major). | const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> innerVectors | ( | Index | outerStart, |
| Index | outerSize | ||
| ) | const [inherited] |
*this if *this is col-major (resp. row-major). Read-only. 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.
| bool isApprox | ( | const SparseMatrixBase< OtherDerived > & | other, |
| RealScalar | prec = NumTraits<Scalar>::dummy_precision() |
||
| ) | const [inline, inherited] |
| bool isApprox | ( | const MatrixBase< OtherDerived > & | other, |
| RealScalar | prec = NumTraits<Scalar>::dummy_precision() |
||
| ) | const [inline, inherited] |
| bool isCompressed | ( | ) | const [inline] |
*this is in compressed form. | bool isRValue | ( | ) | const [inline, inherited] |
| bool isVector | ( | ) | const [inline, inherited] |
| void makeCompressed | ( | ) | [inline] |
Turns the matrix into the compressed format.
| SparseMatrix< _Scalar, _Options, _Index > & markAsRValue | ( | ) | [inline, inherited] |
| SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> middleCols | ( | Index | start, |
| Index | size | ||
| ) | [inherited] |
*this. For column-major matrix only. | const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> middleCols | ( | Index | start, |
| Index | size | ||
| ) | const [inherited] |
*this. For column-major matrix only. (read-only version) | SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> middleRows | ( | Index | start, |
| Index | size | ||
| ) | [inherited] |
*this. For row-major matrix only. | const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> middleRows | ( | Index | start, |
| Index | size | ||
| ) | const [inherited] |
*this. For row-major matrix only. (read-only version) | Index nonZeros | ( | ) | const [inline] |
Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
| RealScalar norm | ( | ) | const [inherited] |
| const ScalarMultipleReturnType operator* | ( | const Scalar & | scalar | ) | const [inline, inherited] |
*this scaled by the scalar factor scalar | const ScalarMultipleReturnType operator* | ( | const RealScalar & | scalar | ) | const [inherited] |
| const CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const SparseMatrix< _Scalar, _Options, _Index > > operator* | ( | const std::complex< Scalar > & | scalar | ) | const [inline, inherited] |
Overloaded for efficient real matrix times complex scalar value
| const SparseSparseProductReturnType<SparseMatrix< _Scalar, _Options, _Index > ,OtherDerived>::Type operator* | ( | const SparseMatrixBase< OtherDerived > & | other | ) | const [inherited] |
C = (A*B).pruned(); // supress numerical zeros (exact)
C = (A*B).pruned(ref);
C = (A*B).pruned(ref,epsilon);
ref is a meaningful non zero reference value. | const SparseDiagonalProduct<SparseMatrix< _Scalar, _Options, _Index > ,OtherDerived> operator* | ( | const DiagonalBase< OtherDerived > & | other | ) | const [inherited] |
| const SparseDenseProductReturnType<SparseMatrix< _Scalar, _Options, _Index > ,OtherDerived>::Type operator* | ( | const MatrixBase< OtherDerived > & | other | ) | const [inherited] |
sparse * dense (returns a dense object unless it is an outer product)
| SparseMatrix< _Scalar, _Options, _Index > & operator*= | ( | const Scalar & | other | ) | [inherited] |
| SparseMatrix< _Scalar, _Options, _Index > & operator*= | ( | const SparseMatrixBase< OtherDerived > & | other | ) | [inherited] |
| SparseMatrix< _Scalar, _Options, _Index > & operator+= | ( | const SparseMatrixBase< OtherDerived > & | other | ) | [inherited] |
| const CwiseUnaryOp<internal::scalar_opposite_op<typename internal::traits<SparseMatrix< _Scalar, _Options, _Index > >::Scalar>, const SparseMatrix< _Scalar, _Options, _Index > > operator- | ( | ) | const [inline, inherited] |
*this | SparseMatrix< _Scalar, _Options, _Index > & operator-= | ( | const SparseMatrixBase< OtherDerived > & | other | ) | [inherited] |
| const CwiseUnaryOp<internal::scalar_quotient1_op<typename internal::traits<SparseMatrix< _Scalar, _Options, _Index > >::Scalar>, const SparseMatrix< _Scalar, _Options, _Index > > operator/ | ( | const Scalar & | scalar | ) | const [inline, inherited] |
*this divided by the scalar value scalar | SparseMatrix< _Scalar, _Options, _Index > & operator/= | ( | const Scalar & | other | ) | [inherited] |
| SparseMatrix& operator= | ( | const SparseMatrix< _Scalar, _Options, _Index > & | other | ) | [inline] |
| EIGEN_DONT_INLINE SparseMatrix& operator= | ( | const SparseMatrixBase< OtherDerived > & | other | ) | [inline] |
Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
| const Index* outerIndexPtr | ( | ) | const [inline] |
| Index* outerIndexPtr | ( | ) | [inline] |
| Index outerSize | ( | ) | const [inline] |
Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
| void prune | ( | Scalar | reference, |
| RealScalar | epsilon = NumTraits<RealScalar>::dummy_precision() |
||
| ) | [inline] |
Suppresses all nonzeros which are much smaller than reference under the tolerence epsilon
| void prune | ( | const KeepFunc & | keep = KeepFunc() | ) | [inline] |
Turns the matrix into compressed format, and suppresses all nonzeros which do not satisfy the predicate keep. The functor type KeepFunc must implement the following function:
| RealReturnType real | ( | ) | const [inline, inherited] |
*this.| NonConstRealReturnType real | ( | ) | [inline, inherited] |
*this.| void reserve | ( | Index | reserveSize | ) | [inline] |
Preallocates reserveSize non zeros.
Precondition: the matrix must be in compressed mode.
| void reserve | ( | const SizesType & | reserveSizes | ) | [inline] |
Preallocates reserveSize[j] non zeros for each column (resp. row) j.
This function turns the matrix in non-compressed mode
| void reserveInnerVectors | ( | const SizesType & | reserveSizes | ) | [inline, protected] |
Resizes the matrix to a rows x cols matrix and initializes it to zero.
| void resizeNonZeros | ( | Index | size | ) | [inline] |
| SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> row | ( | Index | i | ) | [inherited] |
*this. For row-major matrix only. | const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> row | ( | Index | i | ) | const [inherited] |
*this. For row-major matrix only. (read-only version) | Index rows | ( | void | ) | const [inline] |
Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
| const SparseSelfAdjointView<SparseMatrix< _Scalar, _Options, _Index > , UpLo> selfadjointView | ( | ) | const [inline, inherited] |
| SparseSelfAdjointView<SparseMatrix< _Scalar, _Options, _Index > , UpLo> selfadjointView | ( | ) | [inline, inherited] |
| void setFromTriplets | ( | const InputIterators & | begin, |
| const InputIterators & | end | ||
| ) |
Fill the matrix *this with the list of triplets defined by the iterator range begin - .
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:
Scalar value() const; // the value Scalar row() const; // the row index i Scalar col() const; // the column index j
See for instance the Eigen::Triplet template class.
Here is a typical usage example:
typedef Triplet<double> T; std::vector<T> tripletList; triplets.reserve(estimation_of_entries); for(...) { // ... tripletList.push_back(T(i,j,v_ij)); } SparseMatrixType m(rows,cols); m.setFromTriplets(tripletList.begin(), tripletList.end()); // m is ready to go!
| void setZero | ( | ) | [inline] |
Removes all non zeros but keep allocated memory
| Index size | ( | ) | const [inline, inherited] |
Reimplemented from EigenBase< SparseMatrix< _Scalar, _Options, _Index > >.
| RealScalar squaredNorm | ( | ) | const [inherited] |
| void startVec | ( | Index | outer | ) | [inline] |
| SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> subcols | ( | Index | start, |
| Index | size | ||
| ) | [inherited] |
| const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> subcols | ( | Index | start, |
| Index | size | ||
| ) | const [inherited] |
| SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> subrows | ( | Index | start, |
| Index | size | ||
| ) | [inherited] |
| const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,Dynamic> subrows | ( | Index | start, |
| Index | size | ||
| ) | const [inherited] |
| void subTo | ( | Dest & | dst | ) | const [inline, inherited] |
| Scalar sum | ( | ) | const [inherited] |
| void sumupDuplicates | ( | ) |
| void swap | ( | SparseMatrix< _Scalar, _Options, _Index > & | other | ) | [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.
| Transpose<SparseMatrix< _Scalar, _Options, _Index > > transpose | ( | ) | [inline, inherited] |
| const Transpose<const SparseMatrix< _Scalar, _Options, _Index > > transpose | ( | ) | const [inline, inherited] |
| const SparseTriangularView<SparseMatrix< _Scalar, _Options, _Index > , Mode> triangularView | ( | ) | const [inline, inherited] |
| SparseSymmetricPermutationProduct<SparseMatrix< _Scalar, _Options, _Index > ,Upper|Lower> twistedBy | ( | const PermutationMatrix< Dynamic, Dynamic, Index > & | perm | ) | const [inline, inherited] |
| const CwiseUnaryOp<CustomUnaryOp, const SparseMatrix< _Scalar, _Options, _Index > > unaryExpr | ( | const CustomUnaryOp & | func = CustomUnaryOp() | ) | const [inline, inherited] |
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:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; // define function to be applied coefficient-wise double ramp(double x) { if (x > 0) return x; else return 0; } int main(int, char**) { Matrix4d m1 = Matrix4d::Random(); cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(ptr_fun(ramp)) << endl; return 0; }
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:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; // define a custom template unary functor template<typename Scalar> struct CwiseClampOp { CwiseClampOp(const Scalar& inf, const Scalar& sup) : m_inf(inf), m_sup(sup) {} const Scalar operator()(const Scalar& x) const { return x<m_inf ? m_inf : (x>m_sup ? m_sup : x); } Scalar m_inf, m_sup; }; int main(int, char**) { Matrix4d m1 = Matrix4d::Random(); cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(CwiseClampOp<double>(-0.5,0.5)) << endl; return 0; }
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
| const CwiseUnaryView<CustomViewOp, const SparseMatrix< _Scalar, _Options, _Index > > unaryViewExpr | ( | const CustomViewOp & | func = CustomViewOp() | ) | const [inline, inherited] |
The template parameter CustomUnaryOp is the type of the functor of the custom unary operator.
Example:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; // define a custom template unary functor template<typename Scalar> struct CwiseClampOp { CwiseClampOp(const Scalar& inf, const Scalar& sup) : m_inf(inf), m_sup(sup) {} const Scalar operator()(const Scalar& x) const { return x<m_inf ? m_inf : (x>m_sup ? m_sup : x); } Scalar m_inf, m_sup; }; int main(int, char**) { Matrix4d m1 = Matrix4d::Random(); cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(CwiseClampOp<double>(-0.5,0.5)) << endl; return 0; }
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
| const Scalar* valuePtr | ( | ) | const [inline] |
| Scalar* valuePtr | ( | ) | [inline] |
| const ScalarMultipleReturnType operator* | ( | const Scalar & | scalar, |
| const StorageBaseType & | matrix | ||
| ) | [friend, inherited] |
| const CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const SparseMatrix< _Scalar, _Options, _Index > > operator* | ( | const std::complex< Scalar > & | scalar, |
| const StorageBaseType & | matrix | ||
| ) | [friend, inherited] |
| const SparseDiagonalProduct<OtherDerived,SparseMatrix< _Scalar, _Options, _Index > > operator* | ( | const DiagonalBase< OtherDerived > & | lhs, |
| const SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > > & | rhs | ||
| ) | [friend, inherited] |
| const DenseSparseProductReturnType<OtherDerived,SparseMatrix< _Scalar, _Options, _Index > >::Type operator* | ( | const MatrixBase< OtherDerived > & | lhs, |
| const SparseMatrix< _Scalar, _Options, _Index > & | rhs | ||
| ) | [friend, inherited] |
dense * sparse (return a dense object unless it is an outer product)
| std::ostream& operator<< | ( | std::ostream & | s, |
| const SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > > & | m | ||
| ) | [friend, inherited] |
| std::ostream& operator<< | ( | std::ostream & | s, |
| const SparseMatrix< _Scalar, _Options, _Index > & | m | ||
| ) | [friend] |
Index* m_innerNonZeros [protected] |
Index m_innerSize [protected] |
bool m_isRValue [protected, inherited] |
Index* m_outerIndex [protected] |
Index m_outerSize [protected] |
1.7.5.1