c++处理矩阵操作:Eigen库初步学习使用

前言:

  Eigen 是一个线性算术的C++模板库,包括:vectors, matrices, 开源以及相关算法。功能强大、快速、优雅以及支持多平台,可以使用该库来方便处理一些矩阵的操作,达到类似matlab那样的快捷。现在已经发展到Eigen3了,目前最新版本为Eigen 3.1.2。

  Eigen使用预备工作:

  首先到Eigen官网上下载Eigen源码包,下载后解压完直接放到自己平时软件所在的目录下,不需要安装。Eigen下载地址为:http://eigen.tuxfamily.org/index.php?title=Main_Page

  然后当自己需要使用到Eigen时,在相应的集成开发环境下添加Eigen所在的头文件目录即可,比如我在Qt下开发,使用的是QtCreator,则需要在工程文件*.pro下添加如下代码:

INCLUDEPATH += C:\Qt\eigen 

  其它的开发环境比如VS可以参考本文后面给出的参考资料(第一个)。

  关于Eigen的一些基本特征:

  Eigen中的矩阵类型一般都是用类似MatrixXXX来表示,可以根据该名字来判断其数据类型,比如说’d’代表double并不是用来表示整数的,;‘f’代表float; ‘i’代表整数;‘c’代表complex,即复数;’d’表示dynamic,即表示矩阵中有些维数是不确定的,动态的……举例子比如说:Matrix2cd,表示的是2*2维的,其每个元素都是复数,复数的实部和虚部都为double类型。

  Eigen中需要非常注意其数据类型,比如2个向量相乘如果得到一个矩阵,则向量中元素的类型和矩阵中元素的类型必须都相同,否则会出现错误。

  下面举个例子来简单使用下Eigen库,本例子非常简单,主要是对Eigen的使用有个感性认识。实验代码如下:

#include <iostream>
#include <vector>
#include <Eigen/Eigen>

using namespace Eigen;
using namespace std;

int main()
{
    Eigen::Vector2d v1, v2;     //Eigen中的变量
    v1 << 5, 6;   //默认的向量为列向量
    cout  << "v1 = " << endl << v1 << endl;
    v2 << 4, 5 ;
    Matrix2d result = v1*v2.transpose();
    cout << "result: " << endl << result << endl;
}

  实验结果如下:

  

  参考资料:

C++矩阵处理工具——Eigen

http://eigen.tuxfamily.org/index.php?title=Main_Page

时间: 2024-10-16 18:51:03

c++处理矩阵操作:Eigen库初步学习使用的相关文章

slam学习之Eigen库的简单总结

1.一句话简述Eigen Eigen是一个C++开源线性代数库,slam中使用Eigen库进行矩阵.向量乃至旋转矩阵与变换矩阵的表示和计算 2.Eigen在ubuntu中的安装 Eigen库在ubuntu软件源中提供,所以可以直接在终端输入以下命令进行安装: sudo apt-get install libeigen3-dev 3.Eigen在ubuntu中的简单应用 一般而言,库是由头文件和库文件组成,在编译时不仅在可执行程序中声明库的头文件,而且要将可执行文件与库文件链接,而Eigen是一个

LinQ的初步学习与总结

嘿嘿,说起来ORM和LinQ,就感觉离我好遥远的,在学校是没有学习的,所以总感觉学习了LinQ就是大神,现在嘛,终于也体会一点,感觉LinQ只是初步学习,没有太难,当然以后使用在项目中就没有这样的简单啦,下面就全面的总结一下LinQ的其中一部分,LinQ有三部分:LinQ TO Object:LinQ TO SQL ;LinQ TO XML.而在这里我先来总结一下LinQ TO Object的学习吧 一.初步认识LinQ to Object static void Main(string[] a

第十九篇 jQuery初步学习

jQuery 初步学习 jQuery可以理解为是一种脚本,需要到网上下载,它是一个文件,后缀当然是js的文件,它里面封装了很多函数方法,我们直接调用即可,就比方说,我们用JS,写一个显示与隐藏,通常是:div.style.display="none/block"这一类,即为显示或者隐藏,而jQuery,它里面做了处理,我们直接这样:$("div").hide() 隐藏,$("div").show() 显示,它在js里就处理了hide和show两个

DXUT 初步学习 框架初识

初识DXUT 什么是DXUT 这个概念性的东西,不同的人不同的理解,总的来说还是比较简单的D3D小框架,对D3D的一个简单的封装,可以理解成一个类库.微软作用,可以更好的展示D3D的功能和新发布的特性:游戏开发者作用,可以更快更轻巧的展示模型结果,检验算法效果:学习者作用,可以是一个入门的精巧例子,由于D3D的例子大部分都是利用DXUT的,所以可以更快的学习D3D SDK中的例子,加速学习过程. 现在的DXUT 现在的DXUT主要有D3D9 D3D10和D3D11三个版本,可以看出来D3DX的版

Eigen库的使用笔记

Eigen库的使用笔记 Eigen Matirx Array 多维操作 Matrix 与Array之间的差别与运算 Eigen里面主要有两种数据结构,分别为Matrix与Array,其中Matrix即为数学意义上的矩阵,可以非常方便地进行线性代数相关的运算,而Array即为通常意义上的数组,可以是一维,也可以是二维. Eigen的初始化 Eigen中的Matrix与Array的初始化方式十分相似,同时它们的初始化方法也很多,这里仅用Array作例子. 直接赋值 //直接赋值并初始化 Eigen:

Eigen库矩阵运算使用方法

Eigen库矩阵运算使用方法 Eigen这个类库,存的东西好多的,来看一下主要的几个头文件吧: --Core 有关矩阵和数组的类,有基本的线性代数(包含 三角形 和 自伴乘积 相关),还有相应对数组的操作. --Geometry 几何学的类,有关转换.平移.进位制.2D旋转.3D旋转(四元组和角轴相关) --LU 逻辑单元的类,有关求逆,求行列式,LU分解解算器(FullPivLU,PartialPivLU) --Cholesky 包含LLT和LDLT的乔里斯基因式分解法. (小科普:Chole

移植Eigen库到SylixOS下及使用方法

1. 开发环境 宿主机:Windows 7 集成开发环境:Real-Evo IDE 3.5.3 虚拟机:Ubuntu 目标机:x86 2. Eigen简介 Eigen是一个提供了线性代数.矩阵.向量操作等运算的C++库,其中包含了很多算法.Eigen的License是MPL2,支持多平台. Eigen使用提供源码的方式给用户使用,在使用时只需要包含Eigen的头文件即可进行使用.之所以采用这种方式,是因为Eigen采用模板方式实现,由于模板函数不支持分离编译,所以只能提供源码而不是动态库的方式供

《视觉slam十四讲》之第3讲-实践Eigen库

<视觉slam十四讲>之第3讲-实践Eigen库 Eigen库的安装 sudo apt-get install libeigen3-dev 注:Eigen是一个由纯头文件搭建的线性代数库,头文件安装路径为/usr/include/eigen3/. 实例1:Eigen的基础运算 #include <iostream> #include <ctime> #include <Eigen/Core> // Eigen 部分 #include <Eigen/De

Python数据分析开发环境及numpy矩阵操作

准备工作 下载并安装最新版本的Anaconda 下载并安装最新版本的Visual Studio Code 编辑器 Tips: 可以选择自己喜欢并且熟悉的编辑器或IDE.如:VIM.Emacs.Notepad++.Sublime.Pycharm等. 如果安装的是完整版本的Anaconda,会默认安装Spyder以及Jupyter Notebook.那么不想折腾编辑器的话,推荐使用这两款应用是足够的. Visual Studio Code 推荐插件 Python 可选插件 vscode-icons