首页 > 代码库 > 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 概述