首页 > 代码库 > Duanxx的Design abroad: C++矩阵运算库Eigen 概述

Duanxx的Design abroad: C++矩阵运算库Eigen 概述

一、概述

这两天想起来要做神经网络的作业了,要求用C++完成神经网络的算法。

摆在面前的第一个问题就是,神经网络算法中大量用到了矩阵运算,但是C++不像matlab那样对矩阵运算有很好的支持,本来准备自己写一个C++的矩阵运算的代码的,google了一下后,找到了几个不错的C++矩阵运算库,我选用的是Eigen这个C++矩阵运算库。


Eigen有非常丰富的功能:


l  支持所有大小的矩阵运算,从很小的大小固定的矩阵运算,到任意大的稠密矩阵的运算,甚至连稀疏矩阵的运算它也支持。


l  支持当前所有的标准数据类型,除了我们常用的整型、浮点型外,它同时还支持复数类型以及自定义类型等等,详见:http://eigen.tuxfamily.org/dox/TopicCustomizingEigen.html#CustomScalarType


l  支持大量的矩阵分解和矩阵空间变换的操作,详见:

http://eigen.tuxfamily.org/dox/group__TopicLinearAlgebraDecompositions.html

http://eigen.tuxfamily.org/dox/group__TutorialGeometry.html


l  支持大量的专用模块,比如:非线性优化、多项式解法、FFT等等,但是这些专用模块并不在Eigen的源码中,需要另外下载,详见:

http://eigen.tuxfamily.org/dox/unsupported/index.html


l  高速运算,基于Inter SSE 2/3/4指令集做了运算优化


二、下载和安装

2.1下载

Eigen的主页为:http://eigen.tuxfamily.org/index.php?title=Main_Page

         在写这篇文章的时候,Eigen的版本已经到了3.3.2了。

         主页上就有最新版本的Eigen的下载链接,或者直接使用下面的链接,就可以下载:

http://bitbucket.org/eigen/eigen/get/3.2.2.tar.bz2





下载后文件名为eigen-eigen-1f059a5ac4ac,解压,并把文件名改为eigen3,我把这整个文件考到了D:\Program Files下。

        


 

2.2安装

         由于Eigen仅仅是由一些头文件组成的,所以没有必要对Eigen进行编译,就可以直接使用,且平台无关。

         这里主要关心的是eigen3/Eigen文件夹,这个文件夹下面就是Eigen的源码,也就是我们需要添加的头文件目录。

         在eigen3/unsupported文件夹下面的Eigen文件夹中,是Eigen的一些扩展功能的代码,需要的话,也可以添加这个头文件目录。

        

         这里我使用的是Vs2012做测试,新建一个空的工程之后,配置一下工程属性,这里我只添加了Eigen的核心代码的路径。






 

三、 测试

<span style="font-size:18px;">#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
 
int main()
{
         MatrixXdm(2,2);
         m(0,0)= 3;
         m(1,0)= 2.5;
         m(0,1)= -1;
         m(1,1)= m(1,0) + m(0,1);
         std::cout<< m << std::endl;
}
</span>





Duanxx的Design abroad: C++矩阵运算库Eigen 概述