Duanxx的Design abroad: C++矩阵运算库Eigen 概要
2015-10-12 11:18
489 查看
一
、概要
这两天想起来要做神经网络的作业了,要求用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做測试。新建一个空的project之后,配置一下project属性。这里我仅仅加入了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>
相关文章推荐
- leetcode 155 Min Stack C++ 24ms solution
- 在安卓JNI/NDK中使用C++11
- C++设计模式(第一周)
- 借助STL实现一些常用的C++的几种字符串处理函数
- 指向函数的指针1(c语言)
- 值得关注的10个C语言开源项目
- iOS学习之---个人总结C语言自学建议!
- c++五种内存分配、堆与栈区别
- c语言中基本数据类型printf()对应格式
- Exception-异常处理(c++)的总结
- C/C++内存理解
- c语言static用法
- (转)在Eclipse中进行C/C++开发的配置方法(20140721最新版)
- 几种C++ std::string和std::wstring相互转换的转换方法
- C++对象模型
- C++&nbsp;有符号&nbsp;无符号数
- Effective&nbsp;C++笔记
- C语言字符串操作
- C++回调函数
- C++&nbsp;字符串分割