在c++矩阵库eigen的使用方法_c++中使用eigen库-CSDN博客博文中介绍了eigen矩阵库的使用,这里介绍另一种矩阵库:armadillo~
Armadillo:C++下的Matlab替代品
armadillo是目前使用比较广的C++矩阵运算库之一,许多Matlab的矩阵操作函数都可以找到对应,这 对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo也会很方便。下面列了一些Armadillo的特性:
- 支持整数,浮点数,和复数矩阵。
- 支持矩阵逐元素操作,包括abs · conj · conv_to · eps · imag/real · misc functions (exp, log, pow, sqrt, round, sign, ...) · trigonometric functions (cos, sin, ...)等等。
- 支持矩阵分块操作。
- 支持对整体矩阵的操作diagvec · min/max · prod · sum · statistics (mean, stddev, ...) · accu · as_scalar · det · dot/cdot/norm_dot · log_det · norm · rank · trace等等。
- Matlab用户,你甚至可以找到你熟悉的hist · histc · unique · cumsum · sort_index · find · repmat · linspace等函数。
- 除了自带的矩阵基本运算之外,可自动检测是否安装有BLAS,或更快的 OpenBLAS, Intel MKL, AMD ACML,并使用他们替代自带基本运算实现。
- 提供接口使用LAPACK进行矩阵分解运算,svd · qr · lu · fft等等。
- 提供了稀疏矩阵类,支持常用操作,但暂时没有矩阵分解的实现。
可以使用OpenBLAS等库进行加速,安装教程参见:http://www.cnblogs.com/youthlion/archive/2012/05/15/2501465.html
vs下安装Armadillo
1、下载Armadillo,解压后把其中的include文件夹完整拷贝出来,放到某处,如D:\Armadillo;
2、修改D:\Armadillo\include\armadillo_bits\config.hpp,将
#define ARMA_USE_LAPACK
#define ARMA_USE_BLAS
这两句取消注释。表示使用这两个库。
3、安装lapack和blas。实际上第一步中下载的压缩包里自带了这两个库,但是在vs2010中用这两个库会出现卡死现象,其他编译环境没有测试。可以去CLAPACK for Windows下载blas.lib,libf2c.lib,lapack.lib三个库,并在编译环境的额外依赖库中添加这三个库。(linker-> input-> additional dependencies)
4、在编译器的include目录中添加include文件夹的路径以及第三步中三个库文件所在位置。如图:
矩阵类Mat简介:
Mat<type>为模板类,其中type可以是ÿ