Eigen(3)矩阵Matrix及其简单操作 |
您所在的位置:网站首页 › matrixt › Eigen(3)矩阵Matrix及其简单操作 |
1. Matrix类
在Eigen,所有的矩阵和向量都是Matrix模板类的对象,Vector只是一种特殊的矩阵(一行或者一列)。 Matrix有6个模板参数,主要使用前三个参数,剩下的有默认值。 MatrixScalar是表示元素的类型,RowsAtCompileTime为矩阵的行,ColsAtCompileTime为矩阵的列。 库中提供了一些类型便于使用,比如: typedef Matrix Matrix4f; 2. Vectors向量列向量 typedef Matrix Vector3f;行向量 typedef Matrix RowVector2i; 3. DynamicEigen不只限于已知大小(编译阶段)的矩阵,有些矩阵的尺寸是运行时确定的,于是引入了一个特殊的标识符:Dynamic typedef Matrix MatrixXd; typedef Matrix VectorXi; Matrix 4. 构造函数默认的构造函数不执行任何空间分配,也不初始化矩阵的元素。 Matrix3f a; MatrixXf b;这里,a是一个3*3的矩阵,分配了float[9]的空间,但未初始化内部元素;b是一个动态大小的矩阵,定义是未分配空间(0*0)。 指定大小的矩阵,只是分配相应大小的空间,未初始化元素。 MatrixXf a(10,15); VectorXf b(30);这里,a是一个10*15的动态大小的矩阵,分配了空间但未初始化元素;b是一个30大小的向量,同样分配空间未初始化元素。 为了对固定大小和动态大小的矩阵提供统一的API,对指定大小的Matrix传递sizes也是合法的(传递也被忽略)。 Matrix3f a(3,3);可以用构造函数提供4以内尺寸的vector的初始化。 Vector2d a(5.0, 6.0); Vector3d b(5.0, 6.0, 7.0); Vector4d c(5.0, 6.0, 7.0, 8.0); 5. 获取元素通过中括号获取元素,对于矩阵是:(行,列);对于向量,只是传递它的索引,以0为起始。 #include #include using namespace Eigen; int main() { MatrixXd m(2,2); m(0,0) = 3; m(1,0) = 2.5; m(0,1) = -1; m(1,1) = m(1,0) + m(0,1); std::cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |