C++下的Matlab的替代工具Armadillo C++ linear algebra library
2018-01-08 15:25
1096 查看
Amradillo C++线性代数库:http://arma.sourceforge.net/
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/410190bdce8fac489c5e9f3f4c8f3403)
Amradillo的名字来自于"犰狳"(qiúyú) ,又称“铠鼠”(kǎi shǔ), 一种浑身鳞甲的小动物[1],与食蚁兽和树懒有近亲关系,用盔甲似的骨质甲保护自己, 广布美国南部和南美,覆盖接合条带或角质骨板,能蜷缩成圆球以保护全身[2], Amradillo C++线性代数库的Logo标志就是用的这种动物。Armadillo是一个C++开发的线性代数库,里面的矩阵运算功能非常给力,其函数兼顾了效率和易用性,函数接口和Matlab非常相似,该工具库支持基于Linux的操作系统、macOS系统和Windows系统,可以在机器学习、模式识别、计算机视觉、统计学和经济学中应用[3],工具库下载、学习访问官方网站http://arma.sourceforge.net/,最新版本(armadillo-7.800.3)提供的是64
bit Windows 7 with Visual C++2012,而我们使用的较低版本(armadillo-3.4.0)的测试,因为我们使用的32位的编译版本,这里我们也提供了较低版本的下载http://distfiles.macports.org/armadillo/(armadillo-4.**及以后的版本为x64编译版本,而armadillo-3.920.2版本之前的为win32编译版本),每个版本的函数更新情况可参考http://arma.sourceforge.net/docs.html中的“History
ofAPI additions”部分,前述所有版本的armadilloC++库也可到我们的百度云盘下载https://pan.baidu.com/s/1hsGlH4o 密码:kr4v。
Armadillo C++ linear algebra library的使用方法可参考官方网站给出的API Documentation for Armadillo 8.300网页说明、安装包中的README.txt文件和对应的模板使用说明文件Armadillo:a template-based C++ library for linear algebra. Journal of Open SourceSoftware, Vol. 1, pp. 26, 2016. 如果在研究和软件中使用了该工具也需引用上述论文。下面我们以VS2012为例,介绍Armadillo的配置。
1 下载armadillo-3.4.0:https://pan.baidu.com/s/1hsGlH4o密码:kr4v,进行解压缩。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/4d65baf9e46d908c7d8ae0bbd3adca0f)
2 解压缩Armadillo后,在vs环境中把D:\armadillo-3.4.0\include目录添加到包含目录中,然后在写代码是加上#include<armadillo>就可以了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/7dd4655c380d5e153dbb29b2444b9bf2)
3 添加库文件目录D:\armadillo-3.4.0\examples\lib_win32到库文件中。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/d9ddae064c88adb8f0f974415b94d7a6)
4 打开VS 2008,创建一个Win32控制台程序,项目名为Test;
选择解决方案里的Test项目,点击鼠标右键,选择Properties,选择Linker中Input(调试目录)。在Additional Dependencies 中添加如下文件名:
blas_win32_MT.lib
lapack_win32_MT.lib
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/e85589462c1b17d6815740c784e37da3)
至此,配置完成。(如上述配置后,下述程序仍存在问题,建议下载下载blas.lib,libf2c.lib,lapack.lib三个库,下载地址http://icl.cs.utk.edu/lapack-for-windows/clapack/index.html#libraries或
https://pan.baidu.com/s/1hsGlH4o密码:kr4v, 代替blas_win32_MT.lib和lapack_win32_MT.lib进行测试[4,5])
如上配置完成后,可运行如下代码测试(代码从官网http://arma.sourceforge.net/docs.html#example_prog下载,注意需要添加的头文件和域名空间,应该该工具包中也包含了Mat矩阵类的定义,当该工具包与OpenCV同时使用时,注意区分,一般在使用Mat类时时候需要添加父类名,如cv::Mat或arma::Mat等):
#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main()
{
arma::mat A = arma::randu<arma::mat>(4,5);
arma::mat B = arma::randu<arma::mat>(4,5);
cout <<"A: "<<endl<< A<< endl;
cout <<"B: "<<endl<< B<< endl;
cout <<"A%B: "<<endl<< A%B<< endl;
return 0;
}
运行结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/9bb79ead50ef40af2e2ac61318fd4d87)
参考资料
[1] http://blog.csdn.net/visionhack/article/details/46580779
[2] https://baike.baidu.com/item/%E7%8A%B0%E7%8B%B3/522688?fr=aladdin
[3] http://arma.sourceforge.net/
[4] http://blog.csdn.net/computerme/article/details/44344757
[5] http://blog.csdn.net/houston11235/article/details/8266646
Amradillo的名字来自于"犰狳"(qiúyú) ,又称“铠鼠”(kǎi shǔ), 一种浑身鳞甲的小动物[1],与食蚁兽和树懒有近亲关系,用盔甲似的骨质甲保护自己, 广布美国南部和南美,覆盖接合条带或角质骨板,能蜷缩成圆球以保护全身[2], Amradillo C++线性代数库的Logo标志就是用的这种动物。Armadillo是一个C++开发的线性代数库,里面的矩阵运算功能非常给力,其函数兼顾了效率和易用性,函数接口和Matlab非常相似,该工具库支持基于Linux的操作系统、macOS系统和Windows系统,可以在机器学习、模式识别、计算机视觉、统计学和经济学中应用[3],工具库下载、学习访问官方网站http://arma.sourceforge.net/,最新版本(armadillo-7.800.3)提供的是64
bit Windows 7 with Visual C++2012,而我们使用的较低版本(armadillo-3.4.0)的测试,因为我们使用的32位的编译版本,这里我们也提供了较低版本的下载http://distfiles.macports.org/armadillo/(armadillo-4.**及以后的版本为x64编译版本,而armadillo-3.920.2版本之前的为win32编译版本),每个版本的函数更新情况可参考http://arma.sourceforge.net/docs.html中的“History
ofAPI additions”部分,前述所有版本的armadilloC++库也可到我们的百度云盘下载https://pan.baidu.com/s/1hsGlH4o 密码:kr4v。
Armadillo C++ linear algebra library的使用方法可参考官方网站给出的API Documentation for Armadillo 8.300网页说明、安装包中的README.txt文件和对应的模板使用说明文件Armadillo:a template-based C++ library for linear algebra. Journal of Open SourceSoftware, Vol. 1, pp. 26, 2016. 如果在研究和软件中使用了该工具也需引用上述论文。下面我们以VS2012为例,介绍Armadillo的配置。
1 下载armadillo-3.4.0:https://pan.baidu.com/s/1hsGlH4o密码:kr4v,进行解压缩。
2 解压缩Armadillo后,在vs环境中把D:\armadillo-3.4.0\include目录添加到包含目录中,然后在写代码是加上#include<armadillo>就可以了。
3 添加库文件目录D:\armadillo-3.4.0\examples\lib_win32到库文件中。
4 打开VS 2008,创建一个Win32控制台程序,项目名为Test;
选择解决方案里的Test项目,点击鼠标右键,选择Properties,选择Linker中Input(调试目录)。在Additional Dependencies 中添加如下文件名:
blas_win32_MT.lib
lapack_win32_MT.lib
至此,配置完成。(如上述配置后,下述程序仍存在问题,建议下载下载blas.lib,libf2c.lib,lapack.lib三个库,下载地址http://icl.cs.utk.edu/lapack-for-windows/clapack/index.html#libraries或
https://pan.baidu.com/s/1hsGlH4o密码:kr4v, 代替blas_win32_MT.lib和lapack_win32_MT.lib进行测试[4,5])
如上配置完成后,可运行如下代码测试(代码从官网http://arma.sourceforge.net/docs.html#example_prog下载,注意需要添加的头文件和域名空间,应该该工具包中也包含了Mat矩阵类的定义,当该工具包与OpenCV同时使用时,注意区分,一般在使用Mat类时时候需要添加父类名,如cv::Mat或arma::Mat等):
#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main()
{
arma::mat A = arma::randu<arma::mat>(4,5);
arma::mat B = arma::randu<arma::mat>(4,5);
cout <<"A: "<<endl<< A<< endl;
cout <<"B: "<<endl<< B<< endl;
cout <<"A%B: "<<endl<< A%B<< endl;
return 0;
}
运行结果:
参考资料
[1] http://blog.csdn.net/visionhack/article/details/46580779
[2] https://baike.baidu.com/item/%E7%8A%B0%E7%8B%B3/522688?fr=aladdin
[3] http://arma.sourceforge.net/
[4] http://blog.csdn.net/computerme/article/details/44344757
[5] http://blog.csdn.net/houston11235/article/details/8266646
相关文章推荐
- Armadillo C++ linear algebra library 学习笔记(5)——矩阵的分解
- Armadillo C++ linear algebra library 学习笔记(2)——矩阵的基本操作(1)
- Armadillo C++ linear algebra library 学习笔记(6)——生成矩阵
- Armadillo C++ linear algebra library 学习笔记(4)——矩阵的运算
- Armadillo C++ linear algebra library 学习笔记(7)——统计相关函数
- Armadillo C++ linear algebra library 学习笔记(1)——简介与安装
- Armadillo C++ linear algebra library 学习笔记(3)——矩阵的基本操作(2)
- Eigen is a C++ template library for linear algebra
- SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具
- 替代matlab的工具octave
- Matlab工具集介绍(一):ltfat(The Linear Time/Frequency Toolbox)
- 分享:Armadillo C++ Library 3.6.1 发布
- MATLAB Linear Algebra 读书笔记
- Octave:替代Matlab的免费数值计算工具
- Armadillo C++ Library 3.6.0 发布
- 查询Microsoft Visual C++ Debug Library窗体并自动点击忽略按钮的小工具代码
- Matrix and linear algebra in F#, Part V: Sparse matrix implementation in PowerPack, and PInvoke a large scale SVD library as an application[z]
- 分享:Armadillo C++ Library 3.800 发布
- Armadillo C++ Library 3.800 发布
- Armadillo C++ Library