humoto
Classes | Namespaces | Macros | Typedefs | Functions
eigentools.h File Reference

Detailed Description

Author
Alexander Sherikov
Jan Michalczyk

Definition in file eigentools.h.

Go to the source code of this file.

#include <boost/utility/enable_if.hpp>
#include <boost/mpl/has_xxx.hpp>
#include <boost/mpl/and.hpp>

Classes

class  etools::SelectionMatrix
 Selection matrix. More...
 

Namespaces

 etools
 This namespace contains various functions operating on Eigen matrices and vectors.
 

Macros

#define EIGENTOOLS_CONSTANT_SIZE_ALIGN_TYPE   Eigen::AutoAlign
 
#define EIGENTOOLS_CONSTANT_SIZE_MATRIX(rows, cols)   Eigen::Matrix<etools::DefaultScalar, rows, cols, EIGENTOOLS_CONSTANT_SIZE_ALIGN_TYPE | ((rows==1) ? (Eigen::RowMajor) : (Eigen::ColMajor))>
 
#define EIGENTOOLS_CONSTANT_SIZE_VECTOR(rows)   Eigen::Matrix<etools::DefaultScalar, rows, 1, EIGENTOOLS_CONSTANT_SIZE_ALIGN_TYPE>
 
#define EIGENTOOLS_DYNAMIC_MATRIX(Scalar)   Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>
 
#define EIGENTOOLS_DYNAMIC_VECTOR(Scalar)   Eigen::Matrix<Scalar, Eigen::Dynamic, 1>
 

Typedefs

typedef Eigen::Matrix< etools::DefaultScalar, Eigen::Dynamic, Eigen::Dynamic > etools::DefaultDynamicMatrix
 
typedef double etools::DefaultScalar
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10x8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix10x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix1x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2x8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix2x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3x8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix3x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4x8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix4x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5x8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix5x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6x8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix6x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7x8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix7x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix8x9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9x10
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9x2
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9x3
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9x4
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9x5
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9x6
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9x7
 
typedef EIGENTOOLS_CONSTANT_SIZE_MATRIX etools::Matrix9x8
 

Functions

template<class t_DerivedOutput , class t_DerivedInput >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::addATA (Eigen::DenseBase< t_DerivedOutput > &result, const Eigen::DenseBase< t_DerivedInput > &A)
 result += A^T * A More...
 
template<class t_DerivedOutput , class t_DerivedInput >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::addATA (Eigen::DenseBase< t_DerivedOutput > &result, const Eigen::DenseBase< t_DerivedInput > &A, const std::ptrdiff_t offset)
 result.diagonalBlock() += A^T * A More...
 
template<class t_DerivedOutput , class t_DerivedInput1 , class t_DerivedInput2 >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::concatenateMatricesHorizontally (Eigen::PlainObjectBase< t_DerivedOutput > &result, const Eigen::DenseBase< t_DerivedInput1 > &matrix1, const Eigen::DenseBase< t_DerivedInput2 > &matrix2)
 Concatenate matrices horizontally, [A B C ...]. More...
 
template<class t_DerivedOutput , class t_DerivedInput1 , class t_DerivedInput2 , class t_DerivedInput3 >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::concatenateMatricesHorizontally (Eigen::PlainObjectBase< t_DerivedOutput > &result, const Eigen::DenseBase< t_DerivedInput1 > &matrix1, const Eigen::DenseBase< t_DerivedInput2 > &matrix2, const Eigen::DenseBase< t_DerivedInput3 > &matrix3)
 Concatenate matrices horizontally, [A B C ...]. More...
 
template<class t_DerivedOutput , typename t_Scalar , int t_rows, int t_cols, int t_flags>
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::concatenateMatricesVertically (Eigen::PlainObjectBase< t_DerivedOutput > &result, const std::vector< Eigen::Matrix< t_Scalar, t_rows, t_cols, t_flags > > &matrices)
 Concatenate matrices vertically, [A;B;C; ...]. More...
 
template<class t_Derived >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::convertLLTtoSymmetric (Eigen::PlainObjectBase< t_Derived > &matrix)
 Converts left lower triangular matrix to a symmetric matrix. More...
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (2) Vector2
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (3) Vector3
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (4) Vector4
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (5) Vector5
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (6) Vector6
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (7) Vector7
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (8) Vector8
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (9) Vector9
 
typedef etools::EIGENTOOLS_CONSTANT_SIZE_VECTOR (10) Vector10
 
template<class t_DerivedOutput , class t_DerivedInput >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::getATA (Eigen::PlainObjectBase< t_DerivedOutput > &result, const Eigen::DenseBase< t_DerivedInput > &A)
 result = A^T * A More...
 
template<class t_DerivedOutput , class t_DerivedInput >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::getATA (Eigen::PlainObjectBase< t_DerivedOutput > &result, const Eigen::DenseBase< t_DerivedInput > &A, const std::ptrdiff_t offset, const std::ptrdiff_t num_el)
 result.diagonalBlock() = A^T * A More...
 
template<typename t_Scalar , int t_rows, int t_cols, int t_flags>
Eigen::Matrix< t_Scalar, Eigen::Dynamic, Eigen::Dynamic > EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::makeBlockDiagonal (const std::vector< Eigen::Matrix< t_Scalar, t_rows, t_cols, t_flags > > &input_matrices)
 Create a diagonal matrix consisting of the input matrices. More...
 
template<class t_DerivedInput >
Eigen::Matrix< typename Eigen::DenseBase< t_DerivedInput >::Scalar, Eigen::Dynamic, Eigen::Dynamic > EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::makeBlockDiagonal (const Eigen::DenseBase< t_DerivedInput > &input_matrix, const std::ptrdiff_t num_copies)
 Create a diagonal matrix replicating the input matrix. More...
 
template<class t_Derived >
Eigen::Matrix< typename Eigen::DenseBase< t_Derived >::Scalar, Eigen::Dynamic, Eigen::Dynamic > EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::multiplyBlockKroneckerIdentity (const Eigen::DenseBase< t_Derived > &input, const std::size_t input_block_rows, const std::size_t input_block_cols, const std::size_t identity_size)
 Custom Kronecker product: blocks of the input matrix are treated as single elements. More...
 
template<class t_Derived >
Eigen::Map< const Eigen::Matrix< typename Eigen::PlainObjectBase< t_Derived >::Scalar, Eigen::Dynamic, Eigen::Dynamic >, Eigen::Unaligned, Eigen::Stride< Eigen::Dynamic, Eigen::Dynamic > > EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::operator* (const SelectionMatrix &selector, const Eigen::PlainObjectBase< t_Derived > &matrix)
 Multiply selection matrix by a generic Eigen matrix (select rows) More...
 
template<class t_Derived >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::removeColumn (Eigen::PlainObjectBase< t_Derived > &matrix, const std::ptrdiff_t column_to_remove)
 Remove a column with the specified index. More...
 
template<class t_Derived >
void EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::removeRow (Eigen::PlainObjectBase< t_Derived > &matrix, const std::ptrdiff_t row_to_remove)
 Remove a row with the specified index. More...
 
template<class t_Derived >
Eigen::Map< const Eigen::Matrix< typename Eigen::PlainObjectBase< t_Derived >::Scalar, Eigen::Dynamic, Eigen::Dynamic >, Eigen::Unaligned, Eigen::Stride< Eigen::Dynamic, Eigen::Dynamic > > EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::selectRows (const Eigen::PlainObjectBase< t_Derived > &matrix, const std::size_t row_step, const std::size_t first_row=0)
 Select rows from a matrix, in Matlab notation the result is M(first:step:end, :). More...
 
template<class t_DerivedMatrix , class t_DerivedRotation , class t_DerivedTranslation >
Eigen::Matrix< typename Eigen::MatrixBase< t_DerivedMatrix >::Scalar, Eigen::MatrixBase< t_DerivedMatrix >::RowsAtCompileTime, Eigen::MatrixBase< t_DerivedMatrix >::ColsAtCompileTime > EIGENTOOLS_VISIBILITY_ATTRIBUTE etools::transform (const Eigen::MatrixBase< t_DerivedMatrix > &matrix, const Eigen::MatrixBase< t_DerivedRotation > &rotation, const Eigen::MatrixBase< t_DerivedTranslation > &translation)
 Transform the input positions given as a concatenated set of 2d/3d vectors, given M = [v1, v2, ...], returns M_new = [R*v1 + t, R*v2 + t, ...]. More...
 
template<typename t_Derived >
void etools::unsetMatrix (Eigen::DenseBase< t_Derived > &matrix)
 Unset matrix (initialize to NaN) More...
 

Macro Definition Documentation

◆ EIGENTOOLS_CONSTANT_SIZE_ALIGN_TYPE

#define EIGENTOOLS_CONSTANT_SIZE_ALIGN_TYPE   Eigen::AutoAlign

Definition at line 55 of file eigentools.h.

◆ EIGENTOOLS_CONSTANT_SIZE_MATRIX

#define EIGENTOOLS_CONSTANT_SIZE_MATRIX (   rows,
  cols 
)    Eigen::Matrix<etools::DefaultScalar, rows, cols, EIGENTOOLS_CONSTANT_SIZE_ALIGN_TYPE | ((rows==1) ? (Eigen::RowMajor) : (Eigen::ColMajor))>

Definition at line 63 of file eigentools.h.

◆ EIGENTOOLS_CONSTANT_SIZE_VECTOR

#define EIGENTOOLS_CONSTANT_SIZE_VECTOR (   rows)    Eigen::Matrix<etools::DefaultScalar, rows, 1, EIGENTOOLS_CONSTANT_SIZE_ALIGN_TYPE>

Definition at line 58 of file eigentools.h.

◆ EIGENTOOLS_DYNAMIC_MATRIX

#define EIGENTOOLS_DYNAMIC_MATRIX (   Scalar)    Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>
Attention
Won't work if 'Scalar' contains commas.

Definition at line 46 of file eigentools.h.

◆ EIGENTOOLS_DYNAMIC_VECTOR

#define EIGENTOOLS_DYNAMIC_VECTOR (   Scalar)    Eigen::Matrix<Scalar, Eigen::Dynamic, 1>
Attention
Won't work if 'Scalar' contains commas.

Definition at line 49 of file eigentools.h.