线性代数engin
矩阵得定义与初始化¶
- 模板类型
typedef Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, Options> MyMatrixType; typedef Array<Scalar, RowsAtCompileTime, ColsAtCompileTime, Options> MyArrayType - Scalar:指定元素类型,比如,float, double, bool, int 等。
- ColsAtCompileTime:指定列数或者设置成动态(Dynamic);
- Options:标志位,可以是ColMajor或RowMajor,默认是ColMajor;
- 如
Matrix<double, 10, Dynamic> - RowsAtCompileTime:指定行数或者设置成动态(Dynamic);
typedef Matrix<float, Dynamic, Dynamic> MatrixXf; typedef Matrix<float, 3, 1> Vector3f; - 预定义数据类型
Eigen::Matrix3d3x3的双精度浮点矩阵Eigen::Matrix4f4x4的单精度浮点单位矩阵- 预设值初始化
matrix1 = Eigen::MatrixXf::Zero(3,4); //创建动态大小的矩阵(这里是3*4) vector1 = Eigen::Vector3f::Ones(); matDyn = Eigen::MatrixXd::Random(10,10); -
Zero 是初始化为全0,而 Ones 是初始化为全1
Identity(4,4);单位矩阵初始化Constant(3,3, 1.23);所有元素初始化为同一个常数
-
赋值
matrix1 << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; vector1 << 1, 2, 3;
向量¶
- 常用的向量类型,如
Vector3f
矩阵运算¶
- 重载了常见的运算符,如+-*\/,支持矩阵之间、矩阵与标量的运算
- 向量运算
vec1.dot(vec2); vec1.cross(vec2);
- 向量运算
.transpose()矩阵转置.conjugate()矩阵共轭.inverse()矩阵逆.eigenvalues();特征值;.eigenvectors();特征向量