笔记93:关于 C++ 中的 Eigen 库

注意1:Eigen 是一个基于 C++ 模板的线性代数库,以支持在 C++ 中进行矩阵运算;

注意2:要在 C++ 中使用 Eigen,需要在在程序开始前要包含所需头文件路径;

#include <Eigen>

a

a

基础用法汇总


定义向量

Eigen::Vector2d x(1,2)     // 2维向量
Eigen::Vector3d x(1,2,3)   // 3维向量
Eigen::VectorXd x(n)       // 自定义n维向量

定义矩阵

Eigen::Matrix2d mat                  // 2维矩阵
Eigen::Matrix3d mat                  // 3维矩阵
Eigen::Matrix4d mat                  // 4维矩阵
Eigen::MatrixXd mat(m,n)             // 自定义m行,n列矩阵
Eigen::Matrix <double, m, n> mat;    // 自定义m行,n列矩阵

初始化特殊矩阵

Eigen::MatrixXd::Identity(m, n);        //单位矩阵
Eigen::MatrixXd::Zero(m, n);            //全零矩阵
Eigen::MatrixXd::Ones(m, n);            //全一矩阵
Eigen::MatrixXd::Random(m, n);          //随机矩阵

注意:如果想得到一个特殊矩阵,那么要先将矩阵的形状定义出来,然后再给这个矩阵胚子赋值,使其成为特殊矩阵;如下示例;

Eigen::Matrix3d mat;                //先定义
Eigen::MatrixXd::Identity(m, n);    //后赋值(初始化)

对向量/矩阵赋值

Eigen::VectorXd x(n)   //先定义
x(1) = 2;              //后赋值
Eigen::MatrixXd mat(2,2)   //先定义
mat << 1,2,
       3,4;                //赋值方式1
mat(0,1) = 2               //赋值方式2

矩阵运算

注意:对于加减乘除运算,定义矩阵/向量时所调用的类,已经将这些基础运算重载过了,只要两边都是符合要求的矩阵/向量类型,就可以直接使用这些操作符进行矩阵运算;

mat.inverse();           //逆矩阵
mat.dot(w);              //向量mat点积向量w
mat.cross(w);            //向量mat叉乘向量w
mat.transpose()          //转置
mat.norm()               //向量求模,矩阵范数

矩阵属性

vec.size();            //访问向量长度
mat.rows();            //访问矩阵行数
mat.cols();            //访问矩阵列数
mat.block<m,n>(i,j)    //矩阵块操作,从i,j开始,取m×n大小的矩阵
mat.minCoeff();        //输出矩阵中最大的元素
mat.maxCoeff();        //输出矩阵中最小的元素
MatrixXd mMat(4,4);
mMat << 11, 10, 13, 15,
		3, 24, 56,	1,
		2, 12, 45,	0,
		8, 5,	6,	4;
double min = mMat.minCoeff();    //输出0
double max = mMat.maxCoeff();    //输出56

a

a

参考文章:

相关推荐

  1. 笔记93关于 C++ Eigen

    2024-06-07 19:50:01       7 阅读
  2. C++之eigen学习

    2024-06-07 19:50:01       14 阅读
  3. 笔记82:关于 C++ swap 函数

    2024-06-07 19:50:01       19 阅读
  4. Eigenarray() square() asDiagonal()

    2024-06-07 19:50:01       6 阅读
  5. Eigen之Quaterniond

    2024-06-07 19:50:01       45 阅读
  6. Linux关于概念

    2024-06-07 19:50:01       17 阅读
  7. Eigen 介绍,Ubuntu22 下安装 Eigen

    2024-06-07 19:50:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 19:50:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 19:50:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 19:50:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 19:50:01       20 阅读

热门阅读

  1. shell 变量

    2024-06-07 19:50:01       10 阅读
  2. python的rolling_mean()函数

    2024-06-07 19:50:01       10 阅读
  3. RGMII接口--->(001)FPGA实现RGMII接口(一)

    2024-06-07 19:50:01       8 阅读
  4. 从技术层面出发,如何确保云安全?

    2024-06-07 19:50:01       9 阅读
  5. Spark 之 HiveStrategies

    2024-06-07 19:50:01       9 阅读
  6. 设计模式之访问者模式

    2024-06-07 19:50:01       7 阅读
  7. Flask Web开发基础:数据库与ORM实战

    2024-06-07 19:50:01       10 阅读