Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Friends
ArrayBase< Derived > Class Template Reference

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

#include <ArrayBase.h>

Inheritance diagram for ArrayBase< Derived >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef DenseBase< Derived > Base
typedef Base::CoeffReturnType CoeffReturnType
typedef internal::conditional
< NumTraits< Scalar >
::IsComplex, const
CwiseUnaryOp
< internal::scalar_conjugate_op
< Scalar >, const Derived >
, const Derived & >::type 
ConjugateReturnType
typedef CwiseNullaryOp
< internal::scalar_constant_op
< Scalar >, Derived > 
ConstantReturnType
typedef ArrayBase Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl
typedef CwiseUnaryOp
< internal::scalar_imag_op
< Scalar >, const Derived > 
ImagReturnType
typedef internal::traits
< Derived >::Index 
Index
 The type of indices.
typedef CwiseUnaryView
< internal::scalar_imag_ref_op
< Scalar >, Derived > 
NonConstImagReturnType
typedef internal::conditional
< NumTraits< Scalar >
::IsComplex, CwiseUnaryView
< internal::scalar_real_ref_op
< Scalar >, Derived >, Derived & >
::type 
NonConstRealReturnType
typedef
internal::packet_traits
< Scalar >::type 
PacketScalar
typedef Array< typename
internal::traits< Derived >
::Scalar, internal::traits
< Derived >::RowsAtCompileTime,
internal::traits< Derived >
::ColsAtCompileTime, AutoAlign|(internal::traits
< Derived >::Flags
&RowMajorBit?RowMajor:ColMajor),
internal::traits< Derived >
::MaxRowsAtCompileTime,
internal::traits< Derived >
::MaxColsAtCompileTime
PlainObject
typedef internal::conditional
< NumTraits< Scalar >
::IsComplex, const
CwiseUnaryOp
< internal::scalar_real_op
< Scalar >, const Derived >
, const Derived & >::type 
RealReturnType
typedef NumTraits< Scalar >::Real RealScalar
typedef internal::traits
< Derived >::Scalar 
Scalar
typedef CwiseUnaryOp
< internal::scalar_multiple_op
< Scalar >, const Derived > 
ScalarMultipleReturnType
typedef CwiseUnaryOp
< internal::scalar_quotient1_op
< Scalar >, const Derived > 
ScalarQuotient1ReturnType
typedef ArrayBase StorageBaseType
typedef internal::traits
< Derived >::StorageKind 
StorageKind

Public Member Functions

EIGEN_STRONG_INLINE const
CwiseUnaryOp
< internal::scalar_abs_op
< Scalar >, const Derived > 
abs () const
EIGEN_STRONG_INLINE const
CwiseUnaryOp
< internal::scalar_abs2_op
< Scalar >, const Derived > 
abs2 () const
const CwiseUnaryOp
< internal::scalar_acos_op
< Scalar >, const Derived > 
acos () const
ArrayBase< Derived > & array ()
const ArrayBase< Derived > & array () const
const CwiseUnaryOp
< internal::scalar_asin_op
< Scalar >, const Derived > 
asin () const
template<typename CustomBinaryOp , typename OtherDerived >
EIGEN_STRONG_INLINE const
CwiseBinaryOp< CustomBinaryOp,
const Derived, const
OtherDerived > 
binaryExpr (const EIGEN_CURRENT_STORAGE_BASE_CLASS< 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
EIGEN_STRONG_INLINE const
CwiseUnaryOp
< internal::scalar_abs_op
< Scalar >, const Derived > 
cwiseAbs () const
EIGEN_STRONG_INLINE 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_CURRENT_STORAGE_BASE_CLASS< 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 >
EIGEN_STRONG_INLINE const
CwiseBinaryOp
< internal::scalar_max_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseMax (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
template<typename OtherDerived >
EIGEN_STRONG_INLINE const
CwiseBinaryOp
< internal::scalar_min_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseMin (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< std::not_equal_to< Scalar >
, const Derived, const
OtherDerived > 
cwiseNotEqual (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
template<typename OtherDerived >
EIGEN_STRONG_INLINE const
CwiseBinaryOp
< internal::scalar_quotient_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseQuotient (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
const CwiseUnaryOp
< internal::scalar_sqrt_op
< Scalar >, const Derived > 
cwiseSqrt () const
template<typename OtherDerived >
EIGEN_STRONG_INLINE const EIGEN_CWISE_PRODUCT_RETURN_TYPE (Derived, OtherDerived) operator*(const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
template<typename OtherDerived >
EIGEN_STRONG_INLINE const EIGEN_CWISE_PRODUCT_RETURN_TYPE (Derived, OtherDerived) cwiseProduct(const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) 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 ()
const MatrixWrapper< Derived > matrix () 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)
const CwiseUnaryOp
< internal::scalar_add_op
< Scalar >, const Derived > 
operator+ (const Scalar &scalar) const
Derived & operator+= (const Scalar &scalar)
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
Derived & operator-= (const Scalar &scalar)
template<typename OtherDerived >
Derived & operator-= (const ArrayBase< OtherDerived > &other)
template<typename OtherDerived >
EIGEN_STRONG_INLINE const
CwiseBinaryOp
< internal::scalar_quotient_op
< Scalar >, const Derived,
const OtherDerived > 
operator/ (const EIGEN_CURRENT_STORAGE_BASE_CLASS< 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.
template<typename CustomViewOp >
const CwiseUnaryView
< CustomViewOp, const Derived > 
unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const

Protected Member Functions

 ArrayBase ()
template<typename OtherDerived >
Derived & operator+= (const MatrixBase< OtherDerived > &)
template<typename OtherDerived >
Derived & operator-= (const MatrixBase< OtherDerived > &)

Private Member Functions

 ArrayBase (Index)
 ArrayBase (Index, Index)
template<typename OtherDerived >
 ArrayBase (const ArrayBase< OtherDerived > &)

Friends

const ScalarMultipleReturnType operator* (const Scalar &scalar, const StorageBaseType &matrix)
const CwiseUnaryOp
< internal::scalar_multiple2_op
< Scalar, std::complex< Scalar >
>, const Derived > 
operator* (const std::complex< Scalar > &scalar, const StorageBaseType &matrix)
const CwiseUnaryOp
< internal::scalar_add_op
< Scalar >, const Derived > 
operator+ (const Scalar &scalar, const EIGEN_CURRENT_STORAGE_BASE_CLASS< Derived > &other)
const CwiseUnaryOp
< internal::scalar_add_op
< Scalar >, const CwiseUnaryOp
< internal::scalar_opposite_op
< Scalar >, const Derived > > 
operator- (const Scalar &scalar, const EIGEN_CURRENT_STORAGE_BASE_CLASS< Derived > &other)

Detailed Description

template<typename Derived>
class 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

Definition at line 52 of file ArrayBase.h.


Member Typedef Documentation

template<typename Derived>
typedef DenseBase<Derived> ArrayBase< Derived >::Base

Reimplemented from DenseBase< Derived >.

Reimplemented in ArrayWrapper< ExpressionType >.

Definition at line 71 of file ArrayBase.h.

template<typename Derived>
typedef Base::CoeffReturnType ArrayBase< Derived >::CoeffReturnType

Reimplemented from DenseBase< Derived >.

Definition at line 96 of file ArrayBase.h.

template<typename Derived>
typedef internal::conditional<NumTraits<Scalar>::IsComplex, const CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, const Derived>, const Derived& >::type ArrayBase< Derived >::ConjugateReturnType

Definition at line 39 of file ArrayBase.h.

template<typename Derived>
typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,Derived> ArrayBase< Derived >::ConstantReturnType

Reimplemented from DenseBase< Derived >.

Definition at line 116 of file ArrayBase.h.

template<typename Derived>
typedef ArrayBase ArrayBase< Derived >::Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl

Definition at line 60 of file ArrayBase.h.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_imag_op<Scalar>, const Derived> ArrayBase< Derived >::ImagReturnType

Definition at line 51 of file ArrayBase.h.

template<typename Derived>
typedef internal::traits<Derived>::Index ArrayBase< Derived >::Index

The type of indices.

To change this, #define the preprocessor symbol EIGEN_DEFAULT_DENSE_INDEX_TYPE.

See also:
Preprocessor directives.

Reimplemented from DenseBase< Derived >.

Definition at line 66 of file ArrayBase.h.

template<typename Derived>
typedef CwiseUnaryView<internal::scalar_imag_ref_op<Scalar>, Derived> ArrayBase< Derived >::NonConstImagReturnType

Definition at line 53 of file ArrayBase.h.

Definition at line 49 of file ArrayBase.h.

template<typename Derived>
typedef internal::packet_traits<Scalar>::type ArrayBase< Derived >::PacketScalar

Reimplemented from DenseBase< Derived >.

Definition at line 68 of file ArrayBase.h.

template<typename Derived>
typedef Array<typename internal::traits<Derived>::Scalar, internal::traits<Derived>::RowsAtCompileTime, internal::traits<Derived>::ColsAtCompileTime, AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor), internal::traits<Derived>::MaxRowsAtCompileTime, internal::traits<Derived>::MaxColsAtCompileTime > ArrayBase< Derived >::PlainObject

Definition at line 112 of file ArrayBase.h.

template<typename Derived>
typedef internal::conditional<NumTraits<Scalar>::IsComplex, const CwiseUnaryOp<internal::scalar_real_op<Scalar>, const Derived>, const Derived& >::type ArrayBase< Derived >::RealReturnType

Definition at line 44 of file ArrayBase.h.

template<typename Derived>
typedef NumTraits<Scalar>::Real ArrayBase< Derived >::RealScalar

Reimplemented from DenseBase< Derived >.

Definition at line 69 of file ArrayBase.h.

template<typename Derived>
typedef internal::traits<Derived>::Scalar ArrayBase< Derived >::Scalar

Reimplemented from DenseBase< Derived >.

Definition at line 67 of file ArrayBase.h.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_multiple_op<Scalar>, const Derived> ArrayBase< Derived >::ScalarMultipleReturnType

Definition at line 32 of file ArrayBase.h.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_quotient1_op<Scalar>, const Derived> ArrayBase< Derived >::ScalarQuotient1ReturnType

Definition at line 34 of file ArrayBase.h.

template<typename Derived>
typedef ArrayBase ArrayBase< Derived >::StorageBaseType

The base class for a given storage type.

Definition at line 58 of file ArrayBase.h.

template<typename Derived>
typedef internal::traits<Derived>::StorageKind ArrayBase< Derived >::StorageKind

Reimplemented from DenseBase< Derived >.

Definition at line 65 of file ArrayBase.h.


Constructor & Destructor Documentation

template<typename Derived>
ArrayBase< Derived >::ArrayBase ( ) [inline, protected]

Definition at line 168 of file ArrayBase.h.

template<typename Derived>
ArrayBase< Derived >::ArrayBase ( Index  ) [explicit, private]
template<typename Derived>
ArrayBase< Derived >::ArrayBase ( Index  ,
Index   
) [private]
template<typename Derived>
template<typename OtherDerived >
ArrayBase< Derived >::ArrayBase ( const ArrayBase< OtherDerived > &  ) [explicit, private]

Member Function Documentation

template<typename Derived>
EIGEN_STRONG_INLINE const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> ArrayBase< 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:

See also:
abs2()

Definition at line 12 of file ArrayBase.h.

template<typename Derived>
EIGEN_STRONG_INLINE const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> ArrayBase< 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:

See also:
abs(), square()

Definition at line 25 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_acos_op<Scalar>, const Derived> ArrayBase< 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:

See also:
cos(), asin()

Definition at line 104 of file ArrayBase.h.

template<typename Derived>
ArrayBase<Derived>& ArrayBase< Derived >::array ( ) [inline]

Definition at line 156 of file ArrayBase.h.

template<typename Derived>
const ArrayBase<Derived>& ArrayBase< Derived >::array ( ) const [inline]

Definition at line 157 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_asin_op<Scalar>, const Derived> ArrayBase< Derived >::asin ( ) const [inline]
Returns:
an expression of the coefficient-wise arc sine of *this.

Example:

Output:

See also:
sin(), acos()

Definition at line 117 of file ArrayBase.h.

template<typename Derived>
template<typename CustomBinaryOp , typename OtherDerived >
EIGEN_STRONG_INLINE const CwiseBinaryOp<CustomBinaryOp, const Derived, const OtherDerived> ArrayBase< Derived >::binaryExpr ( const EIGEN_CURRENT_STORAGE_BASE_CLASS< 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:

See also:
class CwiseBinaryOp, operator+(), operator-(), cwiseProduct()

Definition at line 58 of file ArrayBase.h.

template<typename Derived>
template<typename NewType >
internal::cast_return_type<Derived,const CwiseUnaryOp<internal::scalar_cast_op<typename internal::traits<Derived>::Scalar, NewType>, const Derived> >::type ArrayBase< Derived >::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

Definition at line 108 of file ArrayBase.h.

template<typename Derived>
ConjugateReturnType ArrayBase< Derived >::conjugate ( ) const [inline]
Returns:
an expression of the complex conjugate of *this.
See also:
adjoint()

Definition at line 117 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_cos_op<Scalar>, const Derived> ArrayBase< 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:

See also:
sin(), acos()

Definition at line 77 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_cube_op<Scalar>, const Derived> ArrayBase< 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:

See also:
square(), pow()

Definition at line 185 of file ArrayBase.h.

template<typename Derived>
EIGEN_STRONG_INLINE const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> ArrayBase< 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:

See also:
cwiseAbs2()

Definition at line 37 of file ArrayBase.h.

template<typename Derived>
EIGEN_STRONG_INLINE const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> ArrayBase< 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:

See also:
cwiseAbs()

Definition at line 47 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
const CwiseBinaryOp<std::equal_to<Scalar>, const Derived, const OtherDerived> ArrayBase< Derived >::cwiseEqual ( const EIGEN_CURRENT_STORAGE_BASE_CLASS< 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:

See also:
cwiseNotEqual(), isApprox(), isMuchSmallerThan()

Definition at line 57 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<std::binder1st<std::equal_to<Scalar> >, const Derived> ArrayBase< 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

Definition at line 79 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> ArrayBase< 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:

See also:
cwiseProduct()

Definition at line 67 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const OtherDerived> ArrayBase< Derived >::cwiseMax ( const EIGEN_CURRENT_STORAGE_BASE_CLASS< 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:

See also:
class CwiseBinaryOp, min()

Definition at line 104 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const OtherDerived> ArrayBase< Derived >::cwiseMin ( const EIGEN_CURRENT_STORAGE_BASE_CLASS< 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:

See also:
class CwiseBinaryOp, max()

Definition at line 90 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
const CwiseBinaryOp<std::not_equal_to<Scalar>, const Derived, const OtherDerived> ArrayBase< Derived >::cwiseNotEqual ( const EIGEN_CURRENT_STORAGE_BASE_CLASS< 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:

See also:
cwiseEqual(), isApprox(), isMuchSmallerThan()

Definition at line 76 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived> ArrayBase< Derived >::cwiseQuotient ( const EIGEN_CURRENT_STORAGE_BASE_CLASS< 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:

See also:
class CwiseBinaryOp, cwiseProduct(), cwiseInverse()

Definition at line 118 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> ArrayBase< 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:

See also:
cwisePow(), cwiseSquare()

Definition at line 57 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
EIGEN_STRONG_INLINE const ArrayBase< Derived >::EIGEN_CWISE_PRODUCT_RETURN_TYPE ( Derived  ,
OtherDerived   
) const [inline]
Returns:
an expression of the coefficient wise product of *this and other
See also:
MatrixBase::cwiseProduct

Definition at line 7 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
EIGEN_STRONG_INLINE const ArrayBase< Derived >::EIGEN_CWISE_PRODUCT_RETURN_TYPE ( Derived  ,
OtherDerived   
) 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:

See also:
class CwiseBinaryOp, cwiseAbs2

Definition at line 37 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_exp_op<Scalar>, const Derived> ArrayBase< 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:

See also:
pow(), log(), sin(), cos()

Definition at line 38 of file ArrayBase.h.

template<typename Derived>
const ImagReturnType ArrayBase< Derived >::imag ( ) const [inline]
Returns:
an read-only expression of the imaginary part of *this.
See also:
real()

Definition at line 132 of file ArrayBase.h.

template<typename Derived>
NonConstImagReturnType ArrayBase< Derived >::imag ( ) [inline]
Returns:
a non const expression of the imaginary part of *this.
See also:
real()

Definition at line 188 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> ArrayBase< 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:

See also:
operator/(), operator*()

Definition at line 159 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_log_op<Scalar>, const Derived> ArrayBase< 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:

See also:
exp()

Definition at line 51 of file ArrayBase.h.

template<typename Derived>
MatrixWrapper<Derived> ArrayBase< Derived >::matrix ( ) [inline]
Returns:
an Matrix expression of this array
See also:
MatrixBase::array()

Definition at line 161 of file ArrayBase.h.

template<typename Derived>
const MatrixWrapper<Derived> ArrayBase< Derived >::matrix ( ) const [inline]

Definition at line 162 of file ArrayBase.h.

template<typename Derived>
const ScalarMultipleReturnType ArrayBase< Derived >::operator* ( const Scalar scalar) const [inline]
Returns:
an expression of *this scaled by the scalar factor scalar

Definition at line 65 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const Derived> ArrayBase< Derived >::operator* ( const std::complex< Scalar > &  scalar) const [inline]

Overloaded for efficient real matrix times complex scalar value

Definition at line 85 of file ArrayBase.h.

template<typename Derived >
template<typename OtherDerived >
EIGEN_STRONG_INLINE Derived & ArrayBase< Derived >::operator*= ( const ArrayBase< OtherDerived > &  other)

replaces *this by *this * other coefficient wise.

Returns:
a reference to *this

Definition at line 218 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_add_op<Scalar>, const Derived> ArrayBase< 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:

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:

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:

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:

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:

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:

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:

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:

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:

See also:
operator+=(), operator-()

Definition at line 116 of file ArrayBase.h.

template<typename Derived>
Derived& ArrayBase< Derived >::operator+= ( const Scalar scalar) [inline]

Definition at line 139 of file ArrayBase.h.

template<typename Derived >
template<typename OtherDerived >
EIGEN_STRONG_INLINE Derived & ArrayBase< Derived >::operator+= ( const ArrayBase< OtherDerived > &  other)

replaces *this by *this + other.

Returns:
a reference to *this

Definition at line 204 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
Derived& ArrayBase< Derived >::operator+= ( const MatrixBase< OtherDerived > &  ) [inline, protected]

Definition at line 176 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_opposite_op<typename internal::traits<Derived>::Scalar>, const Derived> ArrayBase< Derived >::operator- ( void  ) const [inline]
Returns:
an expression of the opposite of *this

Definition at line 60 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_add_op<Scalar>, const Derived> ArrayBase< 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:

See also:
operator+(), operator-=()

Definition at line 135 of file ArrayBase.h.

template<typename Derived>
Derived& ArrayBase< Derived >::operator-= ( const Scalar scalar) [inline]

Definition at line 141 of file ArrayBase.h.

template<typename Derived >
template<typename OtherDerived >
EIGEN_STRONG_INLINE Derived & ArrayBase< Derived >::operator-= ( const ArrayBase< OtherDerived > &  other)

replaces *this by *this - other.

Returns:
a reference to *this

Definition at line 190 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
Derived& ArrayBase< Derived >::operator-= ( const MatrixBase< OtherDerived > &  ) [inline, protected]

Definition at line 179 of file ArrayBase.h.

template<typename Derived>
template<typename OtherDerived >
EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived> ArrayBase< Derived >::operator/ ( const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient wise quotient of *this and other
See also:
MatrixBase::cwiseQuotient

Definition at line 19 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_quotient1_op<typename internal::traits<Derived>::Scalar>, const Derived> ArrayBase< Derived >::operator/ ( const Scalar scalar) const [inline]
Returns:
an expression of *this divided by the scalar value scalar

Definition at line 77 of file ArrayBase.h.

template<typename Derived >
template<typename OtherDerived >
EIGEN_STRONG_INLINE Derived & ArrayBase< Derived >::operator/= ( const ArrayBase< OtherDerived > &  other)

replaces *this by *this / other coefficient wise.

Returns:
a reference to *this

Definition at line 232 of file ArrayBase.h.

template<typename Derived>
Derived& ArrayBase< 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)

Definition at line 134 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_pow_op<Scalar>, const Derived> ArrayBase< 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:

See also:
exp(), log()

Definition at line 144 of file ArrayBase.h.

template<typename Derived>
RealReturnType ArrayBase< Derived >::real ( ) const [inline]
Returns:
a read-only expression of the real part of *this.
See also:
imag()

Definition at line 126 of file ArrayBase.h.

template<typename Derived>
NonConstRealReturnType ArrayBase< Derived >::real ( ) [inline]
Returns:
a non const expression of the real part of *this.
See also:
imag()

Definition at line 182 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_sin_op<Scalar>, const Derived> ArrayBase< 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:

See also:
cos(), asin()

Definition at line 91 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> ArrayBase< 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:

See also:
pow(), square()

Definition at line 64 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_square_op<Scalar>, const Derived> ArrayBase< 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:

See also:
operator/(), operator*(), abs2()

Definition at line 172 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_tan_op<Scalar>, Derived> ArrayBase< 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:

See also:
cos(), sin()

Definition at line 130 of file ArrayBase.h.

template<typename Derived>
template<typename CustomUnaryOp >
const CwiseUnaryOp<CustomUnaryOp, const Derived> ArrayBase< 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:

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:

See also:
class CwiseUnaryOp, class CwiseBinaryOp

Definition at line 155 of file ArrayBase.h.

template<typename Derived>
template<typename CustomViewOp >
const CwiseUnaryView<CustomViewOp, const Derived> ArrayBase< 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:

See also:
class CwiseUnaryOp, class CwiseBinaryOp

Definition at line 173 of file ArrayBase.h.


Friends And Related Function Documentation

template<typename Derived>
const ScalarMultipleReturnType operator* ( const Scalar scalar,
const StorageBaseType matrix 
) [friend]

Definition at line 92 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const Derived> operator* ( const std::complex< Scalar > &  scalar,
const StorageBaseType matrix 
) [friend]

Definition at line 96 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_add_op<Scalar>, const Derived> operator+ ( const Scalar scalar,
const EIGEN_CURRENT_STORAGE_BASE_CLASS< Derived > &  other 
) [friend]

Definition at line 122 of file ArrayBase.h.

template<typename Derived>
const CwiseUnaryOp<internal::scalar_add_op<Scalar>, const CwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const Derived> > operator- ( const Scalar scalar,
const EIGEN_CURRENT_STORAGE_BASE_CLASS< Derived > &  other 
) [friend]

Definition at line 141 of file ArrayBase.h.


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


re_vision
Author(s): Dorian Galvez-Lopez
autogenerated on Sun Jan 5 2014 11:33:53