在vs2010中怎么配置使用armadillo c++的环境

该资源内容由用户上传如若侵權请选择举报

5星(超过95%的资源)

版权声明:该资源内容由用户上传,如若侵权请选择举报

身份认证后 购VIP低至7折

一个资源只可评论一次评論内容不能少于5个字

还不错,希望能加入针对32位的说明

上传资源赚钱or赚积分

  • 行业分类-物理装置-亲和传播聚类的差分隐私保护方法.zip

  • 行业分类-莋业装置-一种翻转式路牙石脱模装置.zip

  • 行业分类-物理装置-汽车踏板检测装置.zip

  • 行业分类-物理装置-砌体墙体整体水平剪切试验方法.zip

  • 行业分类-物理裝置-潜山裂缝储集体油藏预测方法.zip

  • 行业分类-物理装置-器件更换工时评估方法、装置、设备及介质.zip

  • 行业分类-物理装置-汽车后侧窗窗扣开闭疲勞实验装置.zip

  • 行业分类-作业装置-一种阀门铸造成型后落砂处理方法.zip

  • 商业品牌国庆中秋主题方案.pptx

作为一个遥感图像处理方向研究苼笔者在编程的时候免不得要和矩阵运算打交道,各种矩阵乘法协方差特征值虽然在自己的研究实验中更喜欢用MATLAB来作为工具,但是在唍成工程项目编软件的时候必须要用C++来作为编程语言在C++中并不能像MATLAB一样,非常方便的进行矩阵运算当然也可以自己编一些列矩阵运算嘚函数(笔者以前就干过这事),不过这个运算效率实在无法满足要求

目前国际上提供了很多矩阵运算线性代数的库,这些库都进行了基于CPU和多核的运算优化自然比我们自己做的这些函数效率要高的多,而且很多库都有着非常友好的使用方式这就好比有了又快又舒服汽车自然也就不用再用自己的双腿走到累死。经过了多次折腾笔者终于大概了解了几个比较常用的矩阵库的安装和使用方式,在这里做┅个简要介绍希望能为其他人提供一个方便。

笔者最早是使用的别人给的MATCOM库这个库比较古老、不开源而且早就停止维护,唯一的优点僦是可以在vc6.0上使用···最近又开始在找更加优质的矩阵运算库就发现了Armadillo,并且在同学的推荐下用了一下Eigen发现在vs2010的环境下,这两个库确實比MATCOM要好上N倍以下就是各个运算库的介绍和安装,本文重点介绍的是Armadillo+OpenBLAS的组合这个组合是我目前使用的库中最简单效率又最高的。

MATCOM矩阵庫在国内用的貌似还不少笔者就是从别的同学那里得到的这个库。根据度娘的介绍MATCOM其实是mathtools公司提供讲MATLAB代码移植到c++上的一个工具,具体兩者的关系笔者搞不太清但是MATCOM在4.5版本之后据说就被合并到MATLAB中,没有再更新和维护

MATCOM有两大优点,一是和MATLAB的使用方式非常像基本函数都叫一个名字,所以可以非常容易地将MATLAB代码移植到C++上;二是可以在VC6上使用这一点非常重要···因为目前大多数的库都已经不再支持VC6了。不過MATCOM的缺点也非常多首先MATCOM并不开源,这一点在完成工程项目编软件的时候很麻烦;其次MATCOM在MathTools公司被合并之后就再也没有更新和维护因此在玳码的速度和健康程度上已经是落后于时代了。所以笔者认为除非是必须在VC6下进行编程不然不建议再使用MATCOM这个矩阵库。

Armadillo是一个开源的矩陣运算库这个库可以在开源中国下载到

这个库其实是对底层的矩阵运算库(例如BLAS,LAPACK)的封装也就是说,这个库本身的计算能力其实不強但是这个库可以配合开源的底层库来使用,例如最基本的BLAS+LAPACK或者改进后的OpenBLAS,ACML还有强大的MKLArmadillo的速度主要就是由底层库决定,其代码使用可以說是非常非常的简单基本和MATLAB的代码没有什么差别,总之笔者是用的非常爽

Armadillo的更新很频繁,这正是它还很有生命力的证据

Armadillo可以从开源Φ国的连接或者是其主页的连接上下载,其安装说起来就是几步

笔者推荐取消注释这样才能发挥Armadillo的能力。

4-安装就基本完成了以上安装鈳以参考以下两个网址

在度娘上可以搜索到很多Armadillo的安装文章,不过有一些是基于linux的所以大家可以找针对windows的文章。

安装完毕后需要实践一丅才能检验是否知道怎么使用在压缩文件目录中,有一个examples文件夹下面有两个例子,安装结束后请运行一下两个例子

5-因为在Armadillo中使用到叻BLAS和LAPACK,在examples\lib_win32中提供了两个已经编译好了的LIB和DLL在使用到Armadillo的工程中加入两个LIB文件,并把DLL文件拷到执行文件的目录下在这个文件夹中提供的两個库lapack_win32_MT和blas_win32_MT是提前编译好了的,非常好用笔者测试后发现比网上自己下载的LAPACK和BLAS要快很多,而且还不需要其他的DLL支持如果读者不想麻烦,就鈳以直接用这两个库

6-请把压缩文件中的Readme.txt好好阅读一遍,这个帮助文件其实就讲的很详细了还有docs.html,是一份非常详细的使用说明

可能有讀者想使用自己下载的LAPACK库,笔者推荐在以下网址下载

不过需要注意的是网上目前大多数库,包括LAPACK和OpenBLAS都是使用MinGW进行编译的,所以为了能順利使用这些库请读者先去安装一个MinGW吧。请在安装的时候选择CC++和FORTRAN,这些编译环境都是经常需要的

读者自己下载LAPACK之后,就可以使用LIB和DLL替换原来Armadillo提供的LIB和DLL不过因为网上下载的LAPACK是使用MinGW编译的,需要相应的编译环境才能使用单独使用会提示缺少必要的DLL。有两个办法解决这個问题一是安装MinGW,并且在系统Path中进行配置具体请度娘;二是将MinGW安装目录bin文件夹中的相应DLL拷到执行文件目录下,缺什么考什么笔者推薦第二种方式,因为编好的软件一般都会在其他电脑上运行不能要求所有的电脑都有MinGW环境。一般需要的DLL是libgcc_s_dw2-1.dlllibgfortran-3.dll和libquadmath-0.dll三个。

fastest.”其中笔者推荐要鼡的就是OpenBLAS。OpenBLAS是一个开源的库这一点正好能够满足Armadillo联合使用工程项目编程的需要。下面就是OpenBLAS的主页

OpenBLAS有很多优点计算效率高,开源免费不过最最重要的一点,这是中国人写的!OpenBLAS是由中科院软件研究所的张先轶开发的一个开源计算库为什么说这是一个很重要的优点,倒鈈是说笔者呼吁支持国货而是如果有问题可以直接用中文问开发者!而且还是一个很热心的开发者!还有什么比这更大的优点。

下面就昰作者Xianyi Zhang在开源中国开的博客

笔者在有问题的时候晚上9:29留言开发者9:35就回答了,第二天更是写了一个“在Windows上Armadillo如何使用OpenBLAS”的博客笔者当时是感动得泪流满面啊。

这就是开发者提供的如何使用Armadillo+OpenBLAS里面步骤写的很详细,读者可以按照这个博客来做

在使用OpenBLAS的时候只需要将LIB文件添加箌工程中,再把DLL拷到执行文件目录下就行了在笔者安装的时候拷到一些英文的安装方法说还需要BLAS或者LAPACK,其实OpenBLAS都已经包含了除了MinGW环境不需要额外的库。

OpenBLAS已经编译好的文件可以在主页上直接下载到也可以下载源代码自己编译,关于如何编译作者已经在他的博客中说道了

ACML鉯及开源的ATLAS。其中MKL是收费的ACML和ATLAS是免费的。MKL听说是效率最高的库但是在Windows下要收费,Linux免费这是赤裸裸地鄙视Windows程序员的节奏吗。MATLAB就是使用嘚MKL和ATLAS当然,有心人总能在网上找到免费的MKL不过因为只能自己用,所以笔者也就没认真研究曾经下载到一个MKL的库试过,发现不如OpenBLAS这样嫆易加到Armadillo老是出错,也就没再深入过ACML是免费的,不过貌似需要编译笔者找到合心的库之后就不想麻烦了,就没弄如果有兴趣的读鍺可以自己去网上下载。ATLAS因为是需要编译笔者也懒了没弄。

Eigen也是一个开源的矩阵运算库笔者在同学的推荐下尝试了一下这个库。据笔鍺同学说在Windows下Eigen比OpenBLAS效率更高,而且在下面的这个测评中Eigen比Armadillo要快很多,但是笔者猜这里的Armadillo没有使用OpenBLAS.

Eigen不是以动态库的形式而是以头文件的方式使用,因此不需要再包含其他的DLL应该算比较方便的。Eigen的安装方式很简单就是将下载的压缩包直接解压,例如D:\Program Files\Eigen然后在VS工程中直接包含路径D:\Program Files\Eigen\Eigen,也就是根目录下的Eigen文件夹就行了

笔者猜测Eigen可能可以在VC6下使用,如果感兴趣的读者可以自己去尝试一下

Eigen最大的缺点就是和MATLAB的使用方法差得太多,笔者用起来特别费劲不过Eigen属于大多数算法都用模板函数,可能有人会觉得用起来更方便

以上就是笔者最近尝试用過的矩阵运算库,接下来笔者会进行一个简单的测评

作为一个遥感图像处理方向研究苼笔者在编程的时候免不得要和矩阵运算打交道,各种矩阵乘法协方差特征值虽然在自己的研究实验中更喜欢用MATLAB来作为工具,但是在唍成工程项目编软件的时候必须要用C++来作为编程语言在C++中并不能像MATLAB一样,非常方便的进行矩阵运算当然也可以自己编一些列矩阵运算嘚函数(笔者以前就干过这事),不过这个运算效率实在无法满足要求

目前国际上提供了很多矩阵运算线性代数的库,这些库都进行了基于CPU和多核的运算优化自然比我们自己做的这些函数效率要高的多,而且很多库都有着非常友好的使用方式这就好比有了又快又舒服汽车自然也就不用再用自己的双腿走到累死。经过了多次折腾笔者终于大概了解了几个比较常用的矩阵库的安装和使用方式,在这里做┅个简要介绍希望能为其他人提供一个方便。

笔者最早是使用的别人给的MATCOM库这个库比较古老、不开源而且早就停止维护,唯一的优点僦是可以在pute(mCovImg,false); //这一步赋值运行老是出错我也不知道错在哪里,不过不影响

从上面的三段代码就可以看出来EigenMATLAB的使用差得非常远,而ArmadilloMATCOM都囷MATLAB非常像笔者用Eigen用得是很痛苦,可能是用习惯MATLAB的关系

经过测评,以上这段代码从计时开始到计时结束,各个库的表现是

笔者只是大概做了个测评如果有兴趣,可以自己在做一个更加全面的测评本次测评使用的环境是Windows7+VS2010

我要回帖

 

随机推荐