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做測试。新建一个空的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>
版权声明:本文博主原创文章。博客,未经同意不得转载。
Duanxx的Design abroad: C++矩阵运算库Eigen 概要的更多相关文章
- c++矩阵运算库Eigen简介
C++矩阵运算库Eigen介绍 C++中的矩阵运算库常用的有Armadillo,Eigen,OpenCV,ViennaCL,PETSc等.我自己在网上搜了一下不同运算库的特点,最后选择了Eigen.主 ...
- Eigen学习笔记2:C++矩阵运算库Eigen介绍
Eigen常规矩阵定义 1.使用 Eigen的使用在官网上有详细的介绍,这里对我学习过程中用到的基本操作进行介绍.首先是矩阵的定义.在矩阵类的模板参数共有6个.一般情况下我们只需要关注前三个参数即可. ...
- C++矩阵运算库推荐
最近在几个地方都看到有人问C++下用什么矩阵运算库比较好,顺便做了个调查,做一些相关的推荐吧.主要针对稠密矩阵,有时间会再写一个稀疏矩阵的推荐. Armadillo:C++下的Matlab替代品 地址 ...
- C++矩阵运算库armadillo配置笔记
前言 最近在用C++实现神经网络模型,优化算法需要用到矩阵操作,一开始我用的是boost的ublas库,但用着用着感觉很不习惯,接口不够友好.于是上网搜索矩阵运算哪家强,大神们都推荐armadillo ...
- 基于React Native的Material Design风格的组件库 MRN
基于React Native的Material Design风格的组件库.(为了平台统一体验,目前只打算支持安卓) 官方网站 http://mrn.js.org/ Github https://git ...
- ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别
ElementUI(vue UI库).iView(vue UI库).ant design(react UI库)中组件的区别: 事项 ElementUI iView ant design 全局加载进度条 ...
- 异想家纯C语言矩阵运算库
Sandeepin最近做的项目中需要在嵌入式芯片里跑一些算法,而这些单片机性能不上不下,它能跑些简单的程序,但又还没到上Linux系统的地步.所以只好用C语言写一些在高级语言里一个函数就解决的算法了, ...
- C++矩阵处理库--Eigen初步使用
项目要进行比较多的矩阵操作,特别是二维矩阵.刚开始做实验时,使用了动态二维数组,于是写了一堆Matrix函数,作矩阵的乘除加减求逆求行列式.实验做完了,开始做代码优化,发现Matrix.h文件里适 ...
- C++矩阵库 Eigen 快速入门
最近需要用 C++ 做一些数值计算,之前一直采用Matlab 混合编程的方式处理矩阵运算,非常麻烦,直到发现了 Eigen 库,简直相见恨晚,好用哭了. Eigen 是一个基于C++模板的线性代数库, ...
随机推荐
- FZU1608(线段树)
传送门:Huge Mission 题意:给定区间范围[0,N] (2 <= N <= 50000)和M个区间 (1 <= M <= 500000)和这些区间上的权值,求最终并区 ...
- hdu4004(二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4004 大致题意 二分最大跳跃能力,判断是否可以在m次内到达对岸! 分析:由于求青蛙最小弹跳能力,所以二 ...
- (白书训练计划)UVa 120 Stacks of Flapjacks(构造法)
题目地址:UVa 120 水题. 从最大的開始移,每次都把大的先翻到最上面,再翻到以下. 代码例如以下: #include <iostream> #include <cstdio&g ...
- ftk学习记(waitbox篇)
[声明:版权全部.欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面说到了脚本.那么就看看ftk中demo与script搭配的效果是什么样的? 上面的效果图就相 ...
- shell命令批量杀死MySQL连接进程
(1)将全部的MySQL连接进程杀掉 for i in `mysql -uroot -pzhangyun -Bse "show processlist" | grep -v &qu ...
- mv目录前后要加斜杠,否则会当成文件
mv目录要加斜杠,否则会当成文件
- 【SSH 基础】浅谈Hibernate关系映射(4)
继上篇博客 多对多关联映射(单向) 多对多对象关系映射,须要增加一张新表完毕基本映射. Hibernate会自己主动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联,多 ...
- mysql表修改
CREATE TABLE tab2 AS (SELECT * FROM tab1)这种做法表的存储引擎也会采用服务器默认的存储引擎而不是源表的存储引擎,此种复制方法把表的内容也一起复制过来了. CRE ...
- OCP读书笔记(17) - 计划任务
轻量级作业: 也称为持久性轻量级作业,如果当我们的数据库每秒钟需要创建.删除或修改数十个或数百个作业时,使用轻量级作业是降低开销的最佳方法 常规作业:是由oracle 11g Scheduler 所支 ...
- 初探Java8中的HashMap(转)
HashMap是我们最常用的集合之一,同时Java8也提升了HashMap的性能.本着学习的原则,在这探讨一下HashMap. 原理 简单讲解下HashMap的原理:HashMap基于Hash算法,我 ...