A versatible sparse matrix representation. More...
#include <SparseMatrix.h>
Classes | |
class | SingletonVector |
Public Types | |
enum | { Options } |
enum | |
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 < 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 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 | EIGEN_CWISE_PRODUCT_RETURN_TYPE (SparseMatrix< _Scalar, _Options, _Index >, OtherDerived) cwiseProduct(const Eigen |
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] |
*this
and other *this
and other 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. Referenced by IterativeSolverBase< ConjugateGradient< _MatrixType, _UpLo, _Preconditioner > >::_solve_sparse(), SparseMatrix< Scalar, RowMajor >::coeff(), SparseMatrix< Scalar, RowMajor >::coeffRef(), SparseMatrix< Scalar, RowMajor >::insertBackUncompressed(), SparseMatrix< Scalar, RowMajor >::insertCompressed(), and SparseMatrix< Scalar, RowMajor >::insertUncompressed().
const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> col | ( | Index | j | ) | const [inherited] |
*this
. For column-major matrix only. (read-only version) Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
Referenced by IncompleteLUT< _Scalar >::cols(), SimplicialCholeskyBase< SimplicialLDLT< _MatrixType, _UpLo > >::cols(), UmfPackLU< _MatrixType >::cols(), SuperLUBase< _MatrixType, SuperILU< _MatrixType > >::cols(), SimplicialCholeskyBase< Derived >::factorize_preordered(), Eigen::internal::minimum_degree_ordering(), SparseMatrix< Scalar, RowMajor >::resize(), and Eigen::viewAsCholmod().
ConjugateReturnType conjugate | ( | ) | const [inline, inherited] |
*this
.SparseMatrix< _Scalar, _Options, _Index > & const_cast_derived | ( | ) | const [inline, inherited] |
Referenced by SparseSelfAdjointView< MatrixType, UpLo >::rankUpdate(), and Eigen::viewAsCholmod().
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<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 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
SparseMatrix< _Scalar, _Options, _Index > & derived | ( | ) | [inline, inherited] |
Referenced by Eigen::internal::permute_symm_to_fullsymm(), and Eigen::internal::permute_symm_to_symm().
const SparseMatrix< _Scalar, _Options, _Index > & derived | ( | ) | const [inline, inherited] |
const Diagonal<const SparseMatrix> diagonal | ( | ) | const [inline] |
Referenced by SimplicialLLT< _MatrixType, _UpLo >::determinant().
Scalar dot | ( | const MatrixBase< OtherDerived > & | other | ) | const [inherited] |
Scalar dot | ( | const SparseMatrixBase< OtherDerived > & | other | ) | const [inherited] |
const EIGEN_CWISE_PRODUCT_RETURN_TYPE | ( | SparseMatrix< _Scalar, _Options, _Index > | , |
OtherDerived | |||
) | 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 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] |
Referenced by SparseMatrix< Scalar, RowMajor >::operator=().
const Index* innerIndexPtr | ( | ) | const [inline] |
Referenced by UmfPackLU< _MatrixType >::grapInput(), Eigen::internal::minimum_degree_ordering(), PastixBase< PastixLU< _MatrixType > >::PastixDestroy(), and Eigen::viewAsCholmod().
Index* innerIndexPtr | ( | ) | [inline] |
const Index* innerNonZeroPtr | ( | ) | const [inline] |
Referenced by Eigen::viewAsCholmod().
Index* innerNonZeroPtr | ( | ) | [inline] |
Eigen::Map<Matrix<Index,Dynamic,1> > innerNonZeros | ( | ) | [inline, protected] |
Referenced by SparseMatrix< Scalar, RowMajor >::nonZeros().
const Eigen::Map<const Matrix<Index,Dynamic,1> > innerNonZeros | ( | ) | const [inline, protected] |
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). Referenced by SparseInnerVectorSet< SparseMatrix< _Scalar, _Options, _Index >, Size >::operator=().
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. EIGEN_DONT_INLINE Scalar& insert | ( | Index | row, |
Index | col | ||
) | [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(), and SparseMatrix< Scalar, RowMajor >::insertByOuterInner().
Scalar& insertBack | ( | Index | row, |
Index | col | ||
) | [inline] |
Scalar& insertBackByOuterInner | ( | Index | outer, |
Index | inner | ||
) | [inline] |
Referenced by SparseMatrix< Scalar, RowMajor >::insertBack().
Scalar& insertBackByOuterInnerUnordered | ( | Index | outer, |
Index | inner | ||
) | [inline] |
Scalar& insertBackUncompressed | ( | Index | row, |
Index | col | ||
) | [inline] |
EIGEN_DONT_INLINE Scalar& insertByOuterInner | ( | Index | j, |
Index | i | ||
) | [inline] |
EIGEN_DONT_INLINE Scalar& insertCompressed | ( | Index | row, |
Index | col | ||
) | [inline, protected] |
EIGEN_DONT_INLINE Scalar& insertUncompressed | ( | Index | row, |
Index | col | ||
) | [inline, protected] |
Referenced by SparseMatrix< Scalar, RowMajor >::insert().
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. Referenced by SparseMatrix< Scalar, RowMajor >::finalize(), SparseMatrix< Scalar, RowMajor >::insert(), SparseMatrix< Scalar, RowMajor >::insertBackUncompressed(), SparseMatrix< Scalar, RowMajor >::insertCompressed(), SparseMatrix< Scalar, RowMajor >::insertUncompressed(), SparseMatrix< Scalar, RowMajor >::makeCompressed(), SparseMatrix< Scalar, RowMajor >::operator=(), SparseMatrix< Scalar, RowMajor >::reserve(), SparseMatrix< Scalar, RowMajor >::reserveInnerVectors(), and Eigen::viewAsCholmod().
rows()==1 || cols()==1
void makeCompressed | ( | ) | [inline] |
Turns the matrix into the compressed format.
Referenced by SparseMatrix< Scalar, RowMajor >::prune().
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. Referenced by PardisoImpl< PardisoLU< MatrixType > >::_solve_sparse(), and PastixBase< PastixLU< _MatrixType > >::_solve_sparse().
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) Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
Referenced by Eigen::internal::minimum_degree_ordering(), SparseInnerVectorSet< SparseMatrix< _Scalar, _Options, _Index >, Size >::operator=(), and Eigen::viewAsCholmod().
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] |
Referenced by SparseMatrix< Scalar, RowMajor >::operator=().
EIGEN_DONT_INLINE SparseMatrix& operator= | ( | const SparseMatrixBase< OtherDerived > & | other | ) | [inline] |
Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
const Index* outerIndexPtr | ( | ) | const [inline] |
Referenced by UmfPackLU< _MatrixType >::grapInput(), Eigen::internal::minimum_degree_ordering(), PastixBase< PastixLU< _MatrixType > >::PastixDestroy(), and Eigen::viewAsCholmod().
Index* outerIndexPtr | ( | ) | [inline] |
Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
Referenced by SparseMatrix< Scalar, RowMajor >::insert(), SparseMatrix< Scalar, RowMajor >::operator=(), SparseMatrix< Scalar, RowMajor >::resize(), and SparseInnerVectorSet< SparseMatrix< _Scalar, _Options, _Index >, Size >::SparseInnerVectorSet().
void prune | ( | Scalar | reference, |
RealScalar | epsilon = NumTraits<RealScalar>::dummy_precision() |
||
) | [inline] |
Suppresses all nonzeros which are much smaller than reference under the tolerence epsilon
Referenced by IncompleteLUT< _Scalar >::analyzePattern(), and SparseMatrix< Scalar, RowMajor >::prune().
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
.Preallocates reserveSize non zeros.
Precondition: the matrix must be in compressed mode.
Referenced by SparseMatrix< Scalar, RowMajor >::insert(), and SparseMatrix< Scalar, RowMajor >::insertUncompressed().
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.
Referenced by PardisoLLT< MatrixType, _UpLo >::getMatrix(), PardisoLDLT< MatrixType, Options >::getMatrix(), UmfPackLU< _MatrixType >::grapInput(), SparseMatrix< Scalar, RowMajor >::initAssignment(), SimplicialCholeskyBase< Derived >::ordering(), and SparseMatrix< Scalar, RowMajor >::SparseMatrix().
void resizeNonZeros | ( | Index | size | ) | [inline] |
Referenced by Eigen::internal::minimum_degree_ordering().
SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> row | ( | Index | i | ) | [inherited] |
*this
. For row-major matrix only. Referenced by SparseMatrix< Scalar, RowMajor >::coeff(), SparseMatrix< Scalar, RowMajor >::coeffRef(), SparseMatrix< Scalar, RowMajor >::insertBackUncompressed(), SparseMatrix< Scalar, RowMajor >::insertCompressed(), and SparseMatrix< Scalar, RowMajor >::insertUncompressed().
const SparseInnerVectorSet<SparseMatrix< _Scalar, _Options, _Index > ,1> row | ( | Index | i | ) | const [inherited] |
*this
. For row-major matrix only. (read-only version) Reimplemented from SparseMatrixBase< SparseMatrix< _Scalar, _Options, _Index > >.
Referenced by SimplicialCholeskyBase< Derived >::analyzePattern_preordered(), SimplicialCholeskyBase< Derived >::factorize_preordered(), SparseMatrix< Scalar, RowMajor >::resize(), IncompleteLUT< _Scalar >::rows(), SimplicialCholeskyBase< SimplicialLDLT< _MatrixType, _UpLo > >::rows(), UmfPackLU< _MatrixType >::rows(), SuperLUBase< _MatrixType, SuperILU< _MatrixType > >::rows(), and Eigen::viewAsCholmod().
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!
References Eigen::internal::set_from_triplets().
void setZero | ( | ) | [inline] |
Removes all non zeros but keep allocated memory
Referenced by SparseMatrix< Scalar, RowMajor >::operator=().
Reimplemented from EigenBase< SparseMatrix< _Scalar, _Options, _Index > >.
Referenced by SparseMatrix< Scalar, RowMajor >::finalize().
RealScalar squaredNorm | ( | ) | const [inherited] |
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] |
void sumupDuplicates | ( | ) |
References PlainObjectBase< Derived >::resize().
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.
Referenced by SparseMatrix< Scalar, RowMajor >::operator=(), SparseMatrix< Scalar, RowMajor >::reserveInnerVectors(), and SparseMatrix< Scalar, RowMajor >::swap().
Matrix<Scalar,RowsAtCompileTime,ColsAtCompileTime> toDense | ( | ) | const [inline, inherited] |
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
Referenced by UmfPackLU< _MatrixType >::grapInput(), PastixBase< PastixLU< _MatrixType > >::PastixDestroy(), and Eigen::viewAsCholmod().
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] |
Referenced by SparseMatrix< Scalar, RowMajor >::coeff(), SparseMatrix< Scalar, RowMajor >::coeffRef(), SparseMatrix< Scalar, RowMajor >::data(), SparseMatrix< Scalar, RowMajor >::finalize(), SparseMatrix< Scalar, RowMajor >::innerIndexPtr(), SparseMatrix< Scalar, RowMajor >::insertBackByOuterInner(), SparseMatrix< Scalar, RowMajor >::insertBackByOuterInnerUnordered(), SparseMatrix< Scalar, RowMajor >::insertBackUncompressed(), SparseMatrix< Scalar, RowMajor >::insertCompressed(), SparseMatrix< Scalar, RowMajor >::insertUncompressed(), SparseMatrix< Scalar, RowMajor >::makeCompressed(), SparseMatrix< Scalar, RowMajor >::nonZeros(), SparseMatrix< Scalar, RowMajor >::operator=(), SparseMatrix< Scalar, RowMajor >::prune(), SparseMatrix< Scalar, RowMajor >::reserve(), SparseMatrix< Scalar, RowMajor >::reserveInnerVectors(), SparseMatrix< Scalar, RowMajor >::resize(), SparseMatrix< Scalar, RowMajor >::resizeNonZeros(), SparseMatrix< Scalar, RowMajor >::setZero(), SparseMatrix< Scalar, RowMajor >::startVec(), SparseMatrix< Scalar, RowMajor >::swap(), and SparseMatrix< Scalar, RowMajor >::valuePtr().
Index* m_innerNonZeros [protected] |
Referenced by SparseMatrix< Scalar, RowMajor >::coeff(), SparseMatrix< Scalar, RowMajor >::coeffRef(), SparseMatrix< Scalar, RowMajor >::initAssignment(), SparseMatrix< Scalar, RowMajor >::innerNonZeroPtr(), SparseMatrix< Scalar, RowMajor >::innerNonZeros(), SparseMatrix< Scalar, RowMajor >::insertBackUncompressed(), SparseMatrix< Scalar, RowMajor >::insertUncompressed(), SparseMatrix< Scalar, RowMajor >::isCompressed(), SparseMatrix< Scalar, RowMajor >::makeCompressed(), SparseMatrix< Scalar, RowMajor >::nonZeros(), SparseMatrix< Scalar, RowMajor >::reserveInnerVectors(), SparseMatrix< Scalar, RowMajor >::resize(), SparseMatrix< Scalar, RowMajor >::setZero(), SparseMatrix< Scalar, RowMajor >::swap(), and SparseMatrix< Scalar, RowMajor >::~SparseMatrix().
Index m_innerSize [protected] |
bool m_isRValue [protected, inherited] |
Index* m_outerIndex [protected] |
Referenced by SparseMatrix< Scalar, RowMajor >::coeff(), SparseMatrix< Scalar, RowMajor >::coeffRef(), SparseMatrix< Scalar, RowMajor >::finalize(), SparseMatrix< Scalar, RowMajor >::insertBackByOuterInner(), SparseMatrix< Scalar, RowMajor >::insertBackByOuterInnerUnordered(), SparseMatrix< Scalar, RowMajor >::insertBackUncompressed(), SparseMatrix< Scalar, RowMajor >::insertCompressed(), SparseMatrix< Scalar, RowMajor >::insertUncompressed(), SparseMatrix< Scalar, RowMajor >::makeCompressed(), SparseMatrix< Scalar, RowMajor >::operator=(), SparseMatrix< Scalar, RowMajor >::outerIndexPtr(), SparseMatrix< Scalar, RowMajor >::prune(), SparseMatrix< Scalar, RowMajor >::reserveInnerVectors(), SparseMatrix< Scalar, RowMajor >::resize(), SparseMatrix< Scalar, RowMajor >::setZero(), SparseMatrix< Scalar, RowMajor >::startVec(), SparseMatrix< Scalar, RowMajor >::swap(), and SparseMatrix< Scalar, RowMajor >::~SparseMatrix().
Index m_outerSize [protected] |
Referenced by SparseMatrix< Scalar, RowMajor >::cols(), SparseMatrix< Scalar, RowMajor >::finalize(), SparseMatrix< Scalar, RowMajor >::innerNonZeros(), SparseMatrix< Scalar, RowMajor >::insertCompressed(), SparseMatrix< Scalar, RowMajor >::makeCompressed(), SparseMatrix< Scalar, RowMajor >::operator=(), SparseMatrix< Scalar, RowMajor >::outerSize(), SparseMatrix< Scalar, RowMajor >::prune(), SparseMatrix< Scalar, RowMajor >::reserveInnerVectors(), SparseMatrix< Scalar, RowMajor >::resize(), SparseMatrix< Scalar, RowMajor >::rows(), SparseMatrix< Scalar, RowMajor >::setZero(), and SparseMatrix< Scalar, RowMajor >::swap().