Eigen::Vector3d a(1.0, 2.0, 3.0)
std::cout << "a = \n" << a << std::endl;
std::cout << "a.transepose() = \n" << a.transepose() << std::endl;
输出结果为:
a =
1.0
2.0
3.0
a.transepose() =
1.0 2. 0 3.0
原文链接
1. Matrix类
在Eigen,所有的矩阵和向量都是Matrix模板类的对象,Vector只是一种特殊的矩阵(一行或者一列)。
Matrix有6个模板参数,主要使用前三个参数,剩下的有默认值。
Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>
Scalar是表示元素的类型,RowsAtCompileTime为矩阵的行,ColsAtCompileTime为矩阵的列。
库中提供了一些类型便于使用,比如:
typedef Matrix<float, 4, 4> Matrix4f;
2. Vectors向量
列向量
typedef Matrix<float, 3, 1> Vector3f;
行向量
typedef Matrix<int, 1, 2> RowVector2i;
3. Dynamic
Eigen不只限于已知大小(编译阶段)的矩阵,有些矩阵的尺寸是运行时确定的,于是引入了一个特殊的标识符:Dynamic
typedef Matrix<double, Dynamic, Dynamic> MatrixXd;
typedef Matrix<int, Dynamic, 1> VectorXi;
Matrix<float, 3, Dynamic>