C++ Eigen库的引入与使用

首先肯定是怎么样把eigen库导入代码确保可以被调用。

eigen库的引入

常见错误

原因

编译器没有找到(编译器只找到include目录下,而Eigen在eigen3目录下)。

原本的写法

#include <Eigen/Dense> 

解决方案

改变头文件的include写法后如下。

#include <eigen3/Eigen/Dense> 

参考教程

cubuntu 安装 Eigen 及使用_ubuntu eigen-CSDN博客Ubuntu系统下安装Eigen库的方法是通过命令sudo apt-get install libeigen3-dev来进行安装。安装完成后,Eigen库默认的安装路径在/usr/include/eigen3。可以通过pkg-config --modversion eigen3来查看Eigen的版本信息。https://blog.csdn.net/weixin_45867382/article/details/122607631上面的解决方案应该也并不唯一,后面有机会再研究下看看。

Eigen库的使用

以下的运行直接使用code runner。

以创建矩阵为例。

#include <iostream>
#include <eigen3/Eigen/Dense>

using namespace std;

int main()
{
    // 创建一个m*n的矩阵 元素为int型
    Eigen::MatrixXi m(2, 1);
    m << 1.1, 2.2;
    cout << m << endl;
    return 0;
}

此时的输出结果如下:

可见,int型变量无法保存浮点数。

代码总结

Eigen::MatrixXd m(4, 4); // 创建一个4x4的矩阵m 元素为double型

Eigen::MatrixXi n(4, 4); // 创建一个4x4的矩阵n 元素为int型

Eigen::Matrix3d A; // 创建一个3x3的矩阵A

// 对创建的矩阵进行赋值
m << 0.866, -0.500, 0.000, 4.000,
     0.500,  0.866, 0.000, 3.000,
     0.000,  0.000, 1.000, 0.000,
     0.000,  0.000, 0.000, 1.000;

// 直接对矩阵求逆
m.inverse()

输出是自动对齐的

(代码上为了保持美观,强行对齐一下)

此时运行代码会报错。

原因:矩阵PinB的类型是Eigen::MatrixXi无法和类型Eigen::MatrixXd的矩阵T进行运算。

注意:事实证明,每次点完运行都要过一段时间才出运算结果,这样的运算表达虽然简单且便于公式推导,但是这样的变换把时间浪费在0和1的相乘上。

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值