1. armadillo说明
armadillo是目前使用比较广的C++矩阵运算库之一,相当于Matlab的C++替代库。许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo也会很方便。
armadillo特性如下:
-
Armadillo是一种用于C ++语言的高质量线性代数库(矩阵数学),旨在在速度和易用性之间取得良好的平衡
-
提供类似于Matlab的高级语法和功能
-
可用于直接在C ++中进行算法开发,或将研究代码快速转换为生产环境
-
为向量,矩阵和立方体提供有效的类(一阶,二阶和三阶张量);支持密集和稀疏矩阵
-
支持整数,浮点数和复数
-
复杂的表达式评估器(基于模板元编程)可自动组合多个操作以提高速度和效率
-
通过与LAPACK或其高性能替代产品之一(例如MKL或OpenBLAS)集成,可以提供各种矩阵分解(本征,SVD,QR等)
-
可以自动使用OpenMP多线程(并行化)来加快计算量大的操作
-
根据许可许可提供,对开放源代码和专有(封闭源)软件均有用
-
可用于机器学习,模式识别,计算机视觉,信号处理,生物信息学,统计,金融等
2. Ubuntu装armadillo库
1.安装依赖库
Armadillo安装前需要先安装依赖库: OpenBLAS and LAPACK
执行命令:
sudo apt-get install libopenblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install libarpack2-dev
sudo apt-get install libsuperlu-dev
2.下载Armadillo包,链接:https://sourceforge.net/projects/arma/files/armadillo-9.600.6.tar.xz/download
3.在Armadillo的安装目录打开终端执行:
cmake .
make
超级用户执行sudo make install
非超级用户执行make install DESTDIR=my_usr_dir,my_usr_dir这个目录是用来存储C++的头文件与源文件的。
到此,安装完成。
3. 测试程序
// test.cpp
#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma
int main(int argc, char **argv)
{
mat A = randu(4, 5);
mat B = randu(4, 5);
cout << A*trans(B) << endl;
return 0;
}
4. 编译
g++ test.cpp -std=c++11 -larmadillo -o test
5. 运行及结果
./test
//结果如下:
0.8635 0.6455 1.2309 0.3664
0.9823 0.7291 1.3008 0.7792
1.0882 1.0004 1.6399 0.6935
1.4101 0.9859 2.0146 0.7092