Eigen库学习笔记

定义

Eigen 中所有向量和矩阵都是Eigen::Matrix,它是一个模板类,它的前三个参数为:数据类型,行,列

Matrix<float, 2, 3> matrix_23; // 声明一个2*3的float矩阵

同时,Eigen 通过 typedef 提供了许多内置类型,不过底层仍是Eigen::Matrix。
例如,Vector3d 实质上是 Eigen::Matrix<double, 3, 1>,即三维向量;Matrix3d 实质上是 Eigen::Matrix<double, 3, 3>
类型名的最后一个字符为d表示双精度类型,换成f表示单精度类型,两种类型不能混用,必须显示转换

Vector3d v_3d;                  //声明一个3*1的double矩阵
Matrix<double, 3, 1> v_3d;	    //与上一行是等价的
Matrix3d matrix_3d;             //声明一个3*3的double矩阵
Matrix<double, 3, 3> matrix_3d;	//与上一行是等价的

如果不确定矩阵大小,可以使用动态大小的矩阵

Matrix<double, Dynamic, Dynamic> matrix_dynamic;
MatrixXd matrix_dynamic;       //与上一行是等价的

定义矩阵

Matrix3d temp1 = MatrixXd::Identity(3, 3);   //定义3*3的单位阵,或Matrix3d::Identity()
Matrix3d temp2 = MatrixXd::Zero(3, 3);       //定义3*3的零矩阵,或Matrix3d::Zero()
Matrix3d temp3 = MatrixXd::Ones(3, 3);       //定义3*3的全1矩阵,或Matrix3d::Ones()
Matrix3d temp4 = MatrixXd::Random(3, 3);     //定义3*3的随机矩阵,或Matrix3d::Random();
Vector3d temp5 = VectorXd::Zero(3, 1);       //定义3*1的零向量,或Vector3d::Zero()
Vector3d temp6 = VectorXd::Ones(3, 1);       //定义3*1的全1向量,或Vector3d::Ones()

基本运算

转置、逆、行列式

MatrixXd R = MatrixXd::Identity(3, 3);
R << 1, 2, 3,
	5, 6, 7,
	9, 0, 0;
cout << "行数:" << R.rows() << endl;
cout << "列数:" << R.cols() << endl;
cout << "转置:" << endl 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值