Public Member Functions | List of all members
ArrayBase< Derived > Class Template Reference

Base class for all 1D and 2D array, and related expressions. More...

+ Inheritance diagram for ArrayBase< Derived >:

Public Member Functions

const CwiseUnaryOp
< internal::scalar_abs_op
< Scalar >, const Derived > 
abs () const
 
const CwiseUnaryOp
< internal::scalar_abs2_op
< Scalar >, const Derived > 
abs2 () const
 
const CwiseUnaryOp
< internal::scalar_acos_op
< Scalar >, const Derived > 
acos () const
 
const CwiseUnaryOp
< internal::scalar_asin_op
< Scalar >, const Derived > 
asin () const
 
template<typename CustomBinaryOp , typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_difference_op
< Scalar >, const Derived,
const OtherDerived >(operator-)(const
Eigen const CwiseBinaryOp
< internal::scalar_sum_op
< Scalar >, const Derived,
const OtherDerived >(operator+)(const
Eigen const CwiseBinaryOp
< CustomBinaryOp, const
Derived, const OtherDerived > 
binaryExpr (const Eigen::ArrayBase< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) const
 
template<typename NewType >
internal::cast_return_type
< Derived, const CwiseUnaryOp
< internal::scalar_cast_op
< typename internal::traits
< Derived >::Scalar, NewType >
, const Derived > >::type 
cast () const
 
ConjugateReturnType conjugate () const
 
const CwiseUnaryOp
< internal::scalar_cos_op
< Scalar >, const Derived > 
cos () const
 
const CwiseUnaryOp
< internal::scalar_cube_op
< Scalar >, const Derived > 
cube () const
 
const CwiseUnaryOp
< internal::scalar_abs_op
< Scalar >, const Derived > 
cwiseAbs () const
 
const CwiseUnaryOp
< internal::scalar_abs2_op
< Scalar >, const Derived > 
cwiseAbs2 () const
 
template<typename OtherDerived >
const CwiseBinaryOp
< std::equal_to< Scalar >
, const Derived, const
OtherDerived > 
cwiseEqual (const Eigen::ArrayBase< OtherDerived > &other) const
 
const CwiseUnaryOp
< std::binder1st
< std::equal_to< Scalar >
>, const Derived > 
cwiseEqual (const Scalar &s) const
 
const CwiseUnaryOp
< internal::scalar_inverse_op
< Scalar >, const Derived > 
cwiseInverse () const
 
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_max_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseMax (const Eigen::ArrayBase< OtherDerived > &other) const
 
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_min_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseMin (const Eigen::ArrayBase< OtherDerived > &other) const
 
template<typename OtherDerived >
const CwiseBinaryOp
< std::not_equal_to< Scalar >
, const Derived, const
OtherDerived > 
cwiseNotEqual (const Eigen::ArrayBase< OtherDerived > &other) const
 
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_product_op
< typename internal::traits
< Derived >::Scalar, typename
internal::traits< OtherDerived >
::Scalar >, const Derived,
const OtherDerived > 
cwiseProduct (const Eigen::ArrayBase< OtherDerived > &other) const
 
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_quotient_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseQuotient (const Eigen::ArrayBase< OtherDerived > &other) const
 
const CwiseUnaryOp
< internal::scalar_sqrt_op
< Scalar >, const Derived > 
cwiseSqrt () const
 
const CwiseUnaryOp
< internal::scalar_exp_op
< Scalar >, const Derived > 
exp () const
 
const ImagReturnType imag () const
 
NonConstImagReturnType imag ()
 
const CwiseUnaryOp
< internal::scalar_inverse_op
< Scalar >, const Derived > 
inverse () const
 
const CwiseUnaryOp
< internal::scalar_log_op
< Scalar >, const Derived > 
log () const
 
MatrixWrapper< Derived > matrix ()
 
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_product_op
< typename internal::traits
< Derived >::Scalar, typename
internal::traits< OtherDerived >
::Scalar >, const Derived,
const OtherDerived > 
operator* (const Eigen::ArrayBase< OtherDerived > &other) const
 
const ScalarMultipleReturnType operator* (const Scalar &scalar) const
 
const CwiseUnaryOp
< internal::scalar_multiple2_op
< Scalar, std::complex< Scalar >
>, const Derived > 
operator* (const std::complex< Scalar > &scalar) const
 
template<typename OtherDerived >
Derived & operator*= (const ArrayBase< OtherDerived > &other)
 
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_min_op
< Scalar >, const Derived,
const OtherDerived >(min)(const
Eigen const CwiseBinaryOp
< internal::scalar_max_op
< Scalar >, const Derived,
const OtherDerived >(max)(const
Eigen const CwiseBinaryOp
< std::less< Scalar >, const
Derived, const OtherDerived >
(operator<)(const Eigen const
CwiseBinaryOp< std::less_equal
< Scalar >, const Derived,
const OtherDerived >(operator
<=)(const Eigen const
CwiseBinaryOp< std::greater
< Scalar >, const Derived,
const OtherDerived >(operator>
)(const Eigen const
CwiseBinaryOp
< std::greater_equal< Scalar >
, const Derived, const
OtherDerived >(operator>
=)(const Eigen const
CwiseBinaryOp< std::equal_to
< Scalar >, const Derived,
const OtherDerived >(operator==)(const
Eigen const CwiseBinaryOp
< std::not_equal_to< Scalar >
, const Derived, const
OtherDerived >(operator!=)(const
Eigen const CwiseUnaryOp
< internal::scalar_add_op
< Scalar >, const Derived > 
operator+ (const Scalar &scalar) const
 
template<typename OtherDerived >
Derived & operator+= (const ArrayBase< OtherDerived > &other)
 
const CwiseUnaryOp
< internal::scalar_opposite_op
< typename internal::traits
< Derived >::Scalar >, const
Derived > 
operator- () const
 
const CwiseUnaryOp
< internal::scalar_add_op
< Scalar >, const Derived > 
operator- (const Scalar &scalar) const
 
template<typename OtherDerived >
Derived & operator-= (const ArrayBase< OtherDerived > &other)
 
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_quotient_op
< Scalar >, const Derived,
const OtherDerived > 
operator/ (const Eigen::ArrayBase< OtherDerived > &other) const
 
const CwiseUnaryOp
< internal::scalar_quotient1_op
< typename internal::traits
< Derived >::Scalar >, const
Derived > 
operator/ (const Scalar &scalar) const
 
template<typename OtherDerived >
Derived & operator/= (const ArrayBase< OtherDerived > &other)
 
Derived & operator= (const ArrayBase &other)
 
const CwiseUnaryOp
< internal::scalar_pow_op
< Scalar >, const Derived > 
pow (const Scalar &exponent) const
 
RealReturnType real () const
 
NonConstRealReturnType real ()
 
const CwiseUnaryOp
< internal::scalar_sin_op
< Scalar >, const Derived > 
sin () const
 
const CwiseUnaryOp
< internal::scalar_sqrt_op
< Scalar >, const Derived > 
sqrt () const
 
const CwiseUnaryOp
< internal::scalar_square_op
< Scalar >, const Derived > 
square () const
 
const CwiseUnaryOp
< internal::scalar_tan_op
< Scalar >, Derived > 
tan () const
 
template<typename CustomUnaryOp >
const CwiseUnaryOp
< CustomUnaryOp, const Derived > 
unaryExpr (const CustomUnaryOp &func=CustomUnaryOp()) const
 Apply a unary operator coefficient-wise. More...
 
template<typename CustomViewOp >
const CwiseUnaryView
< CustomViewOp, const Derived > 
unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const
 
- Public Member Functions inherited from DenseBase< Derived >
bool all (void) const
 
bool any (void) const
 
Block< Derived > block (Index startRow, Index startCol, Index blockRows, Index blockCols)
 
const Block< const Derived > block (Index startRow, Index startCol, Index blockRows, Index blockCols) const
 
template<int BlockRows, int BlockCols>
Block< Derived, BlockRows,
BlockCols > 
block (Index startRow, Index startCol)
 
template<int BlockRows, int BlockCols>
const Block< const Derived,
BlockRows, BlockCols > 
block (Index startRow, Index startCol) const
 
Block< Derived > bottomLeftCorner (Index cRows, Index cCols)
 
const Block< const Derived > bottomLeftCorner (Index cRows, Index cCols) const
 
template<int CRows, int CCols>
Block< Derived, CRows, CCols > bottomLeftCorner ()
 
template<int CRows, int CCols>
const Block< const Derived,
CRows, CCols > 
bottomLeftCorner () const
 
Block< Derived > bottomRightCorner (Index cRows, Index cCols)
 
const Block< const Derived > bottomRightCorner (Index cRows, Index cCols) const
 
template<int CRows, int CCols>
Block< Derived, CRows, CCols > bottomRightCorner ()
 
template<int CRows, int CCols>
const Block< const Derived,
CRows, CCols > 
bottomRightCorner () const
 
RowsBlockXpr bottomRows (Index n)
 
ConstRowsBlockXpr bottomRows (Index n) const
 
template<int N>
NRowsBlockXpr< N >::Type bottomRows ()
 
template<int N>
ConstNRowsBlockXpr< N >::Type bottomRows () const
 
ColXpr col (Index i)
 
ConstColXpr col (Index i) const
 
ConstColwiseReturnType colwise () const
 
ColwiseReturnType colwise ()
 
Index count () const
 
const internal::eval< Derived >
::type 
eval () const
 
void fill (const Scalar &value)
 
template<unsigned int Added, unsigned int Removed>
const Flagged< Derived, Added,
Removed > 
flagged () const
 
const WithFormat< Derived > format (const IOFormat &fmt) const
 
template<int Size>
DenseBase< Derived >::template
FixedSegmentReturnType< Size >
::Type 
head ()
 
template<int Size>
DenseBase< Derived >::template
ConstFixedSegmentReturnType
< Size >::Type 
head () const
 
SegmentReturnType head (Index size)
 
DenseBase::ConstSegmentReturnType head (Index size) const
 
Index innerSize () const
 
template<typename OtherDerived >
bool isApprox (const DenseBase< OtherDerived > &other, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const
 
bool isApproxToConstant (const Scalar &value, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const
 
bool isConstant (const Scalar &value, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const
 
template<typename Derived >
bool isMuchSmallerThan (const typename NumTraits< Scalar >::Real &other, RealScalar prec) const
 
template<typename OtherDerived >
bool isMuchSmallerThan (const DenseBase< OtherDerived > &other, RealScalar prec=NumTraits< Scalar >::dummy_precision()) const
 
bool isOnes (RealScalar prec=NumTraits< Scalar >::dummy_precision()) const
 
bool isZero (RealScalar prec=NumTraits< Scalar >::dummy_precision()) const
 
ColsBlockXpr leftCols (Index n)
 
ConstColsBlockXpr leftCols (Index n) const
 
template<int N>
NColsBlockXpr< N >::Type leftCols ()
 
template<int N>
ConstNColsBlockXpr< N >::Type leftCols () const
 
internal::traits< Derived >::Scalar maxCoeff () const
 
template<typename IndexType >
internal::traits< Derived >::Scalar maxCoeff (IndexType *row, IndexType *col) const
 
template<typename IndexType >
internal::traits< Derived >::Scalar maxCoeff (IndexType *index) const
 
Scalar mean () const
 
ColsBlockXpr middleCols (Index startCol, Index numCols)
 
ConstColsBlockXpr middleCols (Index startCol, Index numCols) const
 
template<int N>
NColsBlockXpr< N >::Type middleCols (Index startCol)
 
template<int N>
ConstNColsBlockXpr< N >::Type middleCols (Index startCol) const
 
RowsBlockXpr middleRows (Index startRow, Index numRows)
 
ConstRowsBlockXpr middleRows (Index startRow, Index numRows) const
 
template<int N>
NRowsBlockXpr< N >::Type middleRows (Index startRow)
 
template<int N>
ConstNRowsBlockXpr< N >::Type middleRows (Index startRow) const
 
internal::traits< Derived >::Scalar minCoeff () const
 
template<typename IndexType >
internal::traits< Derived >::Scalar minCoeff (IndexType *row, IndexType *col) const
 
template<typename IndexType >
internal::traits< Derived >::Scalar minCoeff (IndexType *index) const
 
const NestByValue< Derived > nestByValue () const
 
Index nonZeros () const
 
template<typename CustomNullaryOp >
const CwiseNullaryOp
< CustomNullaryOp, Derived > 
NullaryExpr (Index rows, Index cols, const CustomNullaryOp &func)
 
template<typename CustomNullaryOp >
const CwiseNullaryOp
< CustomNullaryOp, Derived > 
NullaryExpr (Index size, const CustomNullaryOp &func)
 
template<typename CustomNullaryOp >
const CwiseNullaryOp
< CustomNullaryOp, Derived > 
NullaryExpr (const CustomNullaryOp &func)
 
CommaInitializer< Derived > operator<< (const Scalar &s)
 
template<typename OtherDerived >
CommaInitializer< Derived > operator<< (const DenseBase< OtherDerived > &other)
 
template<typename OtherDerived >
Derived & operator= (const DenseBase< OtherDerived > &other)
 
Derived & operator= (const DenseBase &other)
 
template<typename OtherDerived >
Derived & operator= (const EigenBase< OtherDerived > &other)
 Copies the generic expression other into *this. More...
 
Index outerSize () const
 
Scalar prod () const
 
template<typename Func >
internal::result_of< Func(typename
internal::traits< Derived >
::Scalar)>::type 
redux (const Func &func) const
 
template<int RowFactor, int ColFactor>
const Replicate< Derived,
RowFactor, ColFactor > 
replicate () const
 
const Replicate< Derived,
Dynamic, Dynamic
replicate (Index rowFacor, Index colFactor) const
 
void resize (Index size)
 
void resize (Index rows, Index cols)
 
ReverseReturnType reverse ()
 
ConstReverseReturnType reverse () const
 
void reverseInPlace ()
 
ColsBlockXpr rightCols (Index n)
 
ConstColsBlockXpr rightCols (Index n) const
 
template<int N>
NColsBlockXpr< N >::Type rightCols ()
 
template<int N>
ConstNColsBlockXpr< N >::Type rightCols () const
 
RowXpr row (Index i)
 
ConstRowXpr row (Index i) const
 
ConstRowwiseReturnType rowwise () const
 
RowwiseReturnType rowwise ()
 
template<int Size>
DenseBase< Derived >::template
FixedSegmentReturnType< Size >
::Type 
segment (Index start)
 
template<int Size>
DenseBase< Derived >::template
ConstFixedSegmentReturnType
< Size >::Type 
segment (Index start) const
 
SegmentReturnType segment (Index start, Index size)
 
DenseBase::ConstSegmentReturnType segment (Index start, Index size) const
 
template<typename ThenDerived , typename ElseDerived >
const Select< Derived,
ThenDerived, ElseDerived > 
select (const DenseBase< ThenDerived > &thenMatrix, const DenseBase< ElseDerived > &elseMatrix) const
 
template<typename ThenDerived >
const Select< Derived,
ThenDerived, typename
ThenDerived::ConstantReturnType > 
select (const DenseBase< ThenDerived > &thenMatrix, typename ThenDerived::Scalar elseScalar) const
 
template<typename ElseDerived >
const Select< Derived,
typename
ElseDerived::ConstantReturnType,
ElseDerived > 
select (typename ElseDerived::Scalar thenScalar, const DenseBase< ElseDerived > &elseMatrix) const
 
Derived & setConstant (const Scalar &value)
 
Derived & setLinSpaced (Index size, const Scalar &low, const Scalar &high)
 Sets a linearly space vector. More...
 
Derived & setOnes ()
 
Derived & setRandom ()
 
Derived & setZero ()
 
Scalar sum () const
 
template<typename OtherDerived >
void swap (const DenseBase< OtherDerived > &other, int=OtherDerived::ThisConstantIsPrivateInPlainObjectBase)
 
template<typename OtherDerived >
void swap (PlainObjectBase< OtherDerived > &other)
 
template<int Size>
DenseBase< Derived >::template
FixedSegmentReturnType< Size >
::Type 
tail ()
 
template<int Size>
DenseBase< Derived >::template
ConstFixedSegmentReturnType
< Size >::Type 
tail () const
 
SegmentReturnType tail (Index size)
 
DenseBase::ConstSegmentReturnType tail (Index size) const
 
Block< Derived > topLeftCorner (Index cRows, Index cCols)
 
const Block< const Derived > topLeftCorner (Index cRows, Index cCols) const
 
template<int CRows, int CCols>
Block< Derived, CRows, CCols > topLeftCorner ()
 
template<int CRows, int CCols>
const Block< const Derived,
CRows, CCols > 
topLeftCorner () const
 
Block< Derived > topRightCorner (Index cRows, Index cCols)
 
const Block< const Derived > topRightCorner (Index cRows, Index cCols) const
 
template<int CRows, int CCols>
Block< Derived, CRows, CCols > topRightCorner ()
 
template<int CRows, int CCols>
const Block< const Derived,
CRows, CCols > 
topRightCorner () const
 
RowsBlockXpr topRows (Index n)
 
ConstRowsBlockXpr topRows (Index n) const
 
template<int N>
NRowsBlockXpr< N >::Type topRows ()
 
template<int N>
ConstNRowsBlockXpr< N >::Type topRows () const
 
Eigen::Transpose< Derived > transpose ()
 
ConstTransposeReturnType transpose () const
 
void transposeInPlace ()
 
CoeffReturnType value () const
 
template<typename Visitor >
void visit (Visitor &func) const
 

Additional Inherited Members

- Public Types inherited from DenseBase< Derived >
enum  {
  RowsAtCompileTime,
  ColsAtCompileTime,
  SizeAtCompileTime,
  MaxRowsAtCompileTime,
  MaxColsAtCompileTime,
  MaxSizeAtCompileTime,
  IsVectorAtCompileTime,
  Flags,
  IsRowMajor ,
  CoeffReadCost
}
 
typedef internal::traits
< Derived >::Index 
Index
 The type of indices. More...
 
- Static Public Member Functions inherited from DenseBase< Derived >
static const ConstantReturnType Constant (Index rows, Index cols, const Scalar &value)
 
static const ConstantReturnType Constant (Index size, const Scalar &value)
 
static const ConstantReturnType Constant (const Scalar &value)
 
static const
SequentialLinSpacedReturnType 
LinSpaced (Sequential_t, Index size, const Scalar &low, const Scalar &high)
 Sets a linearly space vector. More...
 
static const
RandomAccessLinSpacedReturnType 
LinSpaced (Index size, const Scalar &low, const Scalar &high)
 Sets a linearly space vector. More...
 
static const
SequentialLinSpacedReturnType 
LinSpaced (Sequential_t, const Scalar &low, const Scalar &high)
 Sets a linearly space vector. More...
 
static const
RandomAccessLinSpacedReturnType 
LinSpaced (const Scalar &low, const Scalar &high)
 Sets a linearly space vector. More...
 
static const ConstantReturnType Ones (Index rows, Index cols)
 
static const ConstantReturnType Ones (Index size)
 
static const ConstantReturnType Ones ()
 
static const CwiseNullaryOp
< internal::scalar_random_op
< Scalar >, Derived > 
Random (Index rows, Index cols)
 
static const CwiseNullaryOp
< internal::scalar_random_op
< Scalar >, Derived > 
Random (Index size)
 
static const CwiseNullaryOp
< internal::scalar_random_op
< Scalar >, Derived > 
Random ()
 
static const ConstantReturnType Zero (Index rows, Index cols)
 
static const ConstantReturnType Zero (Index size)
 
static const ConstantReturnType Zero ()
 
- Protected Member Functions inherited from DenseBase< Derived >
 DenseBase ()
 

Detailed Description

template<typename Derived>
class Eigen::ArrayBase< Derived >

Base class for all 1D and 2D array, and related expressions.

An array is similar to a dense vector or matrix. While matrices are mathematical objects with well defined linear algebra operators, an array is just a collection of scalar values arranged in a one or two dimensionnal fashion. As the main consequence, all operations applied to an array are performed coefficient wise. Furthermore, arrays support scalar math functions of the c++ standard library (e.g., std::sin(x)), and convenient constructors allowing to easily write generic code working for both scalar values and arrays.

This class is the base that is inherited by all array expression types.

Template Parameters
Derivedis the derived type, e.g., an array or an expression type.

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_ARRAYBASE_PLUGIN.

See Also
class MatrixBase, The class hierarchy

Member Function Documentation

const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> abs ( ) const
inline
Returns
an expression of the coefficient-wise absolute value of *this

Example:

Array3d v(1,-2,-3);
cout << v.abs() << endl;

Output:

1
2
3
See Also
abs2()
const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> abs2 ( ) const
inline
Returns
an expression of the coefficient-wise squared absolute value of *this

Example:

Array3d v(1,-2,-3);
cout << v.abs2() << endl;

Output:

1
4
9
See Also
abs(), square()
const CwiseUnaryOp<internal::scalar_acos_op<Scalar>, const Derived> acos ( ) const
inline
Returns
an expression of the coefficient-wise arc cosine of *this.

Example:

Array3d v(0, sqrt(2.)/2, 1);
cout << v.acos() << endl;

Output:

1.57
0.785
0
See Also
cos(), asin()
const CwiseUnaryOp<internal::scalar_asin_op<Scalar>, const Derived> asin ( ) const
inline
Returns
an expression of the coefficient-wise arc sine of *this.

Example:

Output:

See Also
sin(), acos()
const CwiseBinaryOp< internal::scalar_difference_op <Scalar>, const Derived, const OtherDerived> ( operator- )( const Eigen const CwiseBinaryOp< internal::scalar_sum_op <Scalar>, const Derived, const OtherDerived> ( operator+ )( const Eigen const CwiseBinaryOp<CustomBinaryOp, const Derived, const OtherDerived> binaryExpr ( const Eigen::ArrayBase< OtherDerived > &  other,
const CustomBinaryOp &  func = CustomBinaryOp() 
) const
inline
Returns
an expression of the difference of *this and other
Note
If you want to substract a given scalar from all coefficients, see Cwise::operator-().
See Also
class CwiseBinaryOp, operator-=()
Returns
an expression of the sum of *this and other
Note
If you want to add a given scalar to all coefficients, see Cwise::operator+().
See Also
class CwiseBinaryOp, operator+=()
Returns
an expression of a custom coefficient-wise operator func of *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)
See Also
class CwiseBinaryOp, operator+(), operator-(), cwiseProduct()
internal::cast_return_type<Derived,const CwiseUnaryOp<internal::scalar_cast_op<typename internal::traits<Derived>::Scalar, NewType>, const Derived> >::type cast ( ) const
inline
Returns
an expression of *this with the Scalar type casted to NewScalar.

The template parameter NewScalar is the type we are casting the scalars to.

See Also
class CwiseUnaryOp
ConjugateReturnType conjugate ( ) const
inline
Returns
an expression of the complex conjugate of *this.
See Also
adjoint()
const CwiseUnaryOp<internal::scalar_cos_op<Scalar>, const Derived> cos ( ) const
inline
Returns
an expression of the coefficient-wise cosine of *this.

Example:

Array3d v(M_PI, M_PI/2, M_PI/3);
cout << v.cos() << endl;

Output:

-1
6.12e-17
0.5
See Also
sin(), acos()
const CwiseUnaryOp<internal::scalar_cube_op<Scalar>, const Derived> cube ( ) const
inline
Returns
an expression of the coefficient-wise cube of *this.

Example:

Array3d v(2,3,4);
cout << v.cube() << endl;

Output:

8
27
64
See Also
square(), pow()
const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> cwiseAbs ( ) const
inline
Returns
an expression of the coefficient-wise absolute value of *this

Example:

MatrixXd m(2,3);
m << 2, -4, 6,
-5, 1, 0;
cout << m.cwiseAbs() << endl;

Output:

2 4 6
5 1 0
See Also
cwiseAbs2()
const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> cwiseAbs2 ( ) const
inline
Returns
an expression of the coefficient-wise squared absolute value of *this

Example:

MatrixXd m(2,3);
m << 2, -4, 6,
-5, 1, 0;
cout << m.cwiseAbs2() << endl;

Output:

 4 16 36
25  1  0
See Also
cwiseAbs()
const CwiseBinaryOp<std::equal_to<Scalar>, const Derived, const OtherDerived> cwiseEqual ( const Eigen::ArrayBase< OtherDerived > &  other) const
inline
Returns
an expression of the coefficient-wise == operator of *this and other
Warning
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

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
See Also
cwiseNotEqual(), isApprox(), isMuchSmallerThan()
const CwiseUnaryOp<std::binder1st<std::equal_to<Scalar> >, const Derived> cwiseEqual ( const Scalar &  s) const
inline
Returns
an expression of the coefficient-wise == operator of *this and a scalar s
Warning
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().
See Also
cwiseEqual(const MatrixBase<OtherDerived> &) const
const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> cwiseInverse ( ) const
inline
Returns
an expression of the coefficient-wise inverse of *this.

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
See Also
cwiseProduct()
const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const OtherDerived> cwiseMax ( const Eigen::ArrayBase< OtherDerived > &  other) const
inline
Returns
an expression of the coefficient-wise max of *this and other

Example:

Vector3d v(2,3,4), w(4,2,3);
cout << v.cwiseMax(w) << endl;

Output:

4
3
4
See Also
class CwiseBinaryOp, min()
const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const OtherDerived> cwiseMin ( const Eigen::ArrayBase< OtherDerived > &  other) const
inline
Returns
an expression of the coefficient-wise min of *this and other

Example:

Vector3d v(2,3,4), w(4,2,3);
cout << v.cwiseMin(w) << endl;

Output:

2
2
3
See Also
class CwiseBinaryOp, max()
const CwiseBinaryOp<std::not_equal_to<Scalar>, const Derived, const OtherDerived> cwiseNotEqual ( const Eigen::ArrayBase< OtherDerived > &  other) const
inline
Returns
an expression of the coefficient-wise != operator of *this and other
Warning
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

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
See Also
cwiseEqual(), isApprox(), isMuchSmallerThan()
const CwiseBinaryOp< internal::scalar_product_op< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >, const Derived , const OtherDerived > cwiseProduct ( const Eigen::ArrayBase< OtherDerived > &  other) const
inline
Returns
an expression of the Schur product (coefficient wise product) of *this and other

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
See Also
class CwiseBinaryOp, cwiseAbs2
const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived> cwiseQuotient ( const Eigen::ArrayBase< OtherDerived > &  other) const
inline
Returns
an expression of the coefficient-wise quotient of *this and other

Example:

Vector3d v(2,3,4), w(4,2,3);
cout << v.cwiseQuotient(w) << endl;

Output:

0.5
1.5
1.33
See Also
class CwiseBinaryOp, cwiseProduct(), cwiseInverse()
const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> cwiseSqrt ( ) const
inline
Returns
an expression of the coefficient-wise square root of *this.

Example:

Vector3d v(1,2,4);
cout << v.cwiseSqrt() << endl;

Output:

1
1.41
2
See Also
cwisePow(), cwiseSquare()
const CwiseUnaryOp<internal::scalar_exp_op<Scalar>, const Derived> exp ( ) const
inline
Returns
an expression of the coefficient-wise exponential of *this.

Example:

Array3d v(1,2,3);
cout << v.exp() << endl;

Output:

2.72
7.39
20.1
See Also
pow(), log(), sin(), cos()
const ImagReturnType imag ( ) const
inline
Returns
an read-only expression of the imaginary part of *this.
See Also
real()
NonConstImagReturnType imag ( )
inline
Returns
a non const expression of the imaginary part of *this.
See Also
real()
const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> inverse ( ) const
inline
Returns
an expression of the coefficient-wise inverse of *this.

Example:

Array3d v(2,3,4);
cout << v.inverse() << endl;

Output:

0.5
0.333
0.25
See Also
operator/(), operator*()
const CwiseUnaryOp<internal::scalar_log_op<Scalar>, const Derived> log ( ) const
inline
Returns
an expression of the coefficient-wise logarithm of *this.

Example:

Array3d v(1,2,3);
cout << v.log() << endl;

Output:

0
0.693
1.1
See Also
exp()
MatrixWrapper<Derived> matrix ( )
inline
Returns
an Matrix expression of this array
See Also
MatrixBase::array()
const CwiseBinaryOp< internal::scalar_product_op< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >, const Derived , const OtherDerived > operator* ( const Eigen::ArrayBase< OtherDerived > &  other) const
inline
Returns
an expression of the coefficient wise product of *this and other
See Also
MatrixBase::cwiseProduct
const ScalarMultipleReturnType operator* ( const Scalar &  scalar) const
inline
Returns
an expression of *this scaled by the scalar factor scalar
const CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const Derived> operator* ( const std::complex< Scalar > &  scalar) const
inline

Overloaded for efficient real matrix times complex scalar value

Derived & operator*= ( const ArrayBase< OtherDerived > &  other)
inline

replaces *this by *this * other coefficient wise.

Returns
a reference to *this
const CwiseBinaryOp< internal::scalar_min_op <Scalar>, const Derived, const OtherDerived> ( min )( const Eigen const CwiseBinaryOp< internal::scalar_max_op <Scalar>, const Derived, const OtherDerived> ( max )( const Eigen const CwiseBinaryOp< std::less <Scalar>, const Derived, const OtherDerived> ( operator< )( const Eigen const CwiseBinaryOp< std::less_equal <Scalar>, const Derived, const OtherDerived> ( operator<= )( const Eigen const CwiseBinaryOp< std::greater <Scalar>, const Derived, const OtherDerived> ( operator> )( const Eigen const CwiseBinaryOp< std::greater_equal <Scalar>, const Derived, const OtherDerived> ( operator>= )( const Eigen const CwiseBinaryOp< std::equal_to <Scalar>, const Derived, const OtherDerived> ( operator== )( const Eigen const CwiseBinaryOp< std::not_equal_to <Scalar>, const Derived, const OtherDerived> ( operator!= )( const Eigen const CwiseUnaryOp<internal::scalar_add_op<Scalar>, const Derived> operator+ ( const Scalar &  scalar) const
inline
Returns
an expression of the coefficient-wise min of *this and other

Example:

Array3d v(2,3,4), w(4,2,3);
cout << v.min(w) << endl;

Output:

2
2
3
See Also
max()
Returns
an expression of the coefficient-wise max of *this and other

Example:

Array3d v(2,3,4), w(4,2,3);
cout << v.max(w) << endl;

Output:

4
3
4
See Also
min()
Returns
an expression of the coefficient-wise < operator of *this and other

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v<w) << endl;

Output:

1
0
0
See Also
all(), any(), operator>(), operator<=()
Returns
an expression of the coefficient-wise <= operator of *this and other

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v<=w) << endl;

Output:

1
1
0
See Also
all(), any(), operator>=(), operator<()
Returns
an expression of the coefficient-wise > operator of *this and other

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v>w) << endl;

Output:

0
0
1
See Also
all(), any(), operator>=(), operator<()
Returns
an expression of the coefficient-wise >= operator of *this and other

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v>=w) << endl;

Output:

0
1
1
See Also
all(), any(), operator>(), operator<=()
Returns
an expression of the coefficient-wise == operator of *this and other
Warning
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v==w) << endl;

Output:

0
1
0
See Also
all(), any(), isApprox(), isMuchSmallerThan()
Returns
an expression of the coefficient-wise != operator of *this and other
Warning
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v!=w) << endl;

Output:

1
0
1
See Also
all(), any(), isApprox(), isMuchSmallerThan()
Returns
an expression of *this with each coeff incremented by the constant scalar

Example:

Array3d v(1,2,3);
cout << v+5 << endl;

Output:

6
7
8
See Also
operator+=(), operator-()
Derived & operator+= ( const ArrayBase< OtherDerived > &  other)
inline

replaces *this by *this + other.

Returns
a reference to *this
const CwiseUnaryOp<internal::scalar_opposite_op<typename internal::traits<Derived>::Scalar>, const Derived> operator- ( ) const
inline
Returns
an expression of the opposite of *this
const CwiseUnaryOp<internal::scalar_add_op<Scalar>, const Derived> operator- ( const Scalar &  scalar) const
inline
Returns
an expression of *this with each coeff decremented by the constant scalar

Example:

Array3d v(1,2,3);
cout << v-5 << endl;

Output:

-4
-3
-2
See Also
operator+(), operator-=()
Derived & operator-= ( const ArrayBase< OtherDerived > &  other)
inline

replaces *this by *this - other.

Returns
a reference to *this
const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived> operator/ ( const Eigen::ArrayBase< OtherDerived > &  other) const
inline
Returns
an expression of the coefficient wise quotient of *this and other
See Also
MatrixBase::cwiseQuotient
const CwiseUnaryOp<internal::scalar_quotient1_op<typename internal::traits<Derived>::Scalar>, const Derived> operator/ ( const Scalar &  scalar) const
inline
Returns
an expression of *this divided by the scalar value scalar
Derived & operator/= ( const ArrayBase< OtherDerived > &  other)
inline

replaces *this by *this / other coefficient wise.

Returns
a reference to *this
Derived& operator= ( const ArrayBase< Derived > &  other)
inline

Special case of the template operator=, in order to prevent the compiler from generating a default operator= (issue hit with g++ 4.1)

const CwiseUnaryOp<internal::scalar_pow_op<Scalar>, const Derived> pow ( const Scalar &  exponent) const
inline
Returns
an expression of the coefficient-wise power of *this to the given exponent.

Example:

Array3d v(8,27,64);
cout << v.pow(0.333333) << endl;

Output:

2
3
4
See Also
exp(), log()
RealReturnType real ( ) const
inline
Returns
a read-only expression of the real part of *this.
See Also
imag()
NonConstRealReturnType real ( )
inline
Returns
a non const expression of the real part of *this.
See Also
imag()
const CwiseUnaryOp<internal::scalar_sin_op<Scalar>, const Derived> sin ( ) const
inline
Returns
an expression of the coefficient-wise sine of *this.

Example:

Array3d v(M_PI, M_PI/2, M_PI/3);
cout << v.sin() << endl;

Output:

1.22e-16
1
0.866
See Also
cos(), asin()
const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> sqrt ( ) const
inline
Returns
an expression of the coefficient-wise square root of *this.

Example:

Array3d v(1,2,4);
cout << v.sqrt() << endl;

Output:

1
1.41
2
See Also
pow(), square()
const CwiseUnaryOp<internal::scalar_square_op<Scalar>, const Derived> square ( ) const
inline
Returns
an expression of the coefficient-wise square of *this.

Example:

Array3d v(2,3,4);
cout << v.square() << endl;

Output:

4
9
16
See Also
operator/(), operator*(), abs2()
const CwiseUnaryOp<internal::scalar_tan_op<Scalar>, Derived> tan ( ) const
inline
Returns
an expression of the coefficient-wise tan of *this.

Example:

Array3d v(M_PI, M_PI/2, M_PI/3);
cout << v.tan() << endl;

Output:

-1.22e-16
1.63e+16
1.73
See Also
cos(), sin()
const CwiseUnaryOp<CustomUnaryOp, const Derived> unaryExpr ( const CustomUnaryOp &  func = CustomUnaryOp()) const
inline

Apply a unary operator coefficient-wise.

Parameters
[in]funcFunctor implementing the unary operator
Template Parameters
CustomUnaryOpType of func
Returns
An expression of a custom coefficient-wise unary operator func of *this

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
See Also
class CwiseUnaryOp, class CwiseBinaryOp
const CwiseUnaryView<CustomViewOp, const Derived> unaryViewExpr ( const CustomViewOp &  func = CustomViewOp()) const
inline
Returns
an expression of a custom coefficient-wise unary operator func of *this

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
See Also
class CwiseUnaryOp, class CwiseBinaryOp

The documentation for this class was generated from the following files: