From 7aba51ce530e95e062c098ab4fdbfa2de2c5d8da Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 20 Aug 2008 00:58:25 +0000 Subject: * Added .all() and .any() members to PartialRedux * Bug fixes in euler angle snippet, Assign and MapBase * Started a "quick start guide" (draft state) --- doc/QuickStartGuide.dox | 117 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 doc/QuickStartGuide.dox (limited to 'doc/QuickStartGuide.dox') diff --git a/doc/QuickStartGuide.dox b/doc/QuickStartGuide.dox new file mode 100644 index 000000000..8c75bebac --- /dev/null +++ b/doc/QuickStartGuide.dox @@ -0,0 +1,117 @@ +namespace Eigen { + +/** \page QuickStartGuide + +

Quick start guide

+ +

Matrix creation and initialization

+ +In Eigen all kind of dense matrices and vectors are represented by the template class Matrix, e.g.: +\code Matrix m(size,4);\endcode +declares a matrix of 4 columns and having a dynamic (runtime) number of rows. +However, in most cases you can simply use one of the several convenient typedefs (\ref matrixtypedefs), e.g.: +\code Matrix3f m = Matrix3f::Identity(); \endcode +creates a 3x3 fixed size float matrix intialized to the identity matrix, while: +\code MatrixXcd m = MatrixXcd::Zero(rows,cols); \endcode +creates a rows x cols matrix of double precision complex initialized to zero where rows and cols do not have to be +known at runtime. In MatrixXcd "X" stands for dynamic, "c" for complex, and "d" for double. + +You can also initialize a matrix with all coefficients equal to one: +\code MatrixXi m = MatrixXi::Ones(rows,cols); \endcode +or to any constant value, e.g.: +\code +MatrixXi m = MatrixXi::Constant(rows,cols,66); +Matrix4d m = Matrix4d::Constant(6.6); +\endcode + +All these 4 matrix creation functions also exist with the "set" prefix: +\code +Matrix3f m3; MatrixXi mx; VectorXcf vec; +m3.setZero(); mx.setZero(rows,cols); vec.setZero(size); +m3.setIdentity(); mx.setIdentity(rows,cols); vec.setIdentity(size); +m3.setOnes(); mx.setOnes(rows,cols); vec.setOnes(size); +m3.setConstant(6.6); mx.setConstant(rows,cols,6.6); vec.setConstant(size,complex(6,3)); +\endcode + +Finally, all the coefficient of a matrix can set using the comma initializer: + +
+\include Tutorial_commainit_01.cpp + +output: +\verbinclude Tutorial_commainit_01.out +
+ +Eigen's comma initializer also allows to set the matrix per block making it much more powerful: + +
+\include Tutorial_commainit_02.cpp + +output with rows=cols=5: +\verbinclude Tutorial_commainit_02.out +
+ +

Basic Linear Algebra

+ +As long as you use mathematically well defined operators, you can basically write your matrix and vector expressions as you would do with a pen an a piece of paper: +\code +mat1 = mat1*1.5 + mat2 * mat3/4; +\endcode + +\b dot \b product (inner product): +\code +scalar = vec1.dot(vec2); +\endcode + +\b outer \b product: +\code +mat = vec1 * vec2.transpose(); +\endcode + +\b cross \b product: The cross product is defined in the Geometry module, you therefore have to include it first: +\code +#include +vec3 = vec1.cross(vec2); +\endcode + + +By default, Eigen's only allows mathematically well defined operators. However, Eigen's matrices can also be used as simple numerical containers while still offering most common coefficient wise operations via the .cwise() operator prefix: +* Coefficient wise product: \code mat3 = mat1.cwise() * mat2; \endcode +* Coefficient wise division: \code mat3 = mat1.cwise() / mat2; \endcode +* Coefficient wise reciprocal: \code mat3 = mat1.cwise().inverse(); \endcode +* Add a scalar to a matrix: \code mat3 = mat1.cwise() + scalar; \endcode +* Coefficient wise comparison: \code mat3 = mat1.cwise() < mat2; \endcode +* Finally, \c .cwise() offers many common numerical functions including abs, pow, exp, sin, cos, tan, e.g.: +\code mat3 = mat1.cwise().sin(); \endcode + +

Reductions

+ +\code +scalar = mat.sum(); scalar = mat.norm(); scalar = mat.minCoeff(); +vec = mat.colwise().sum(); vec = mat.colwise().norm(); vec = mat.colwise().minCoeff(); +vec = mat.rowwise().sum(); vec = mat.rowwise().norm(); vec = mat.rowwise().minCoeff(); +\endcode +Other natively supported reduction operations include maxCoeff(), norm2(), all() and any(). + + +

Sub matrices

+ + + +

Geometry features

+ + +

Notes on performances

+ + +

Advanced Linear Algebra

+ +

Solving linear problems

+

LU

+

Cholesky

+

QR

+

Eigen value problems

+ +*/ + +} -- cgit v1.2.3