【视觉slam十四讲笔记】eigen库的使用

eigen库的使用

CMakeLists.txt文件

# 声明要求的 cmake 最低版本
cmake_minimum_required(VERSION 2.8)

# 声明一个 cmake 工程
project(HelloSLAM)

# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable(helloSLAM eigen.cpp)


# 添加eigen库
include_directories("/usr/include/eigen3")

eigen.cpp文件

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

using namespace std;
int main(int argc, char **argv)
{
    //声明矩阵2*3
    Eigen::Matrix<float,2,3>matrix2_3;
    //声明三维列向量
    Eigen::Vector3d v_3d;
    //声明一个3乘3的矩阵
    Eigen::Matrix3d matrix3_3;

    //不确定矩阵大小,可以使用动态大小的矩阵
    Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic>dynamic_matrix;
    
    //首先对矩阵输入数据,输出矩阵为【1,2,3;4,5,6;7,8,9】
    matrix3_3<<1,2,3,4,5,6,7,8,9;
    std::cout<<matrix3_3<<endl;

    //对矩阵中某个元素取值,注意顺序是从0,0开始
    cout<<matrix3_3(0,1)<<endl;
    
    //循环打印每个元素
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            cout<<matrix3_3(i,j)<<endl;
            /* code */
        }
        
        /* code */
    }
    

    
    //赋值
    matrix2_3<<1,2,3,4,5,6;
    v_3d<<1,2,3;
    std::cout<<matrix2_3<<endl;
    std::cout<<v_3d<<endl;

    //在进行矩阵相乘时,需要将不同类型的矩阵转换为相同的矩阵,之前是float类型
    //必须这样,放在前面转后再乘会报错
    Eigen::Matrix<double,2,1>matrix_result;
    matrix_result=matrix2_3.cast<double>()*v_3d;
    cout<<matrix_result<<endl;

    //四则运算直接用加减乘除即可
    //------------------------------------------------


    //转置矩阵
    cout<<matrix_result.transpose()<<endl;

    //各元素之和,所有数字相加
    cout<<matrix_result.sum()<<endl;

    //求迹
    cout<<matrix_result.trace()<<endl;

    //求逆
    cout<<matrix3_3.inverse()<<endl;

    //行列式
    cout<<matrix3_3.determinant()<<endl;
   


    
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值