本人之前移植了matlab算法,想着试着用C++实现后进行对比,无意中找到了这个armadillo库,这是是一个开放源代码的线性代数库,这是它的官方网站 Armadillo。
配置
本人使用的是VS2017 + C++,在配置这个库上,本人为了方便,直接运用vs扩展NuGet配置,教程如下:
新建项目或者打开你想配置的项目,在解决方案资源管理器中,右键项目,选中“管理NuGet程序包”
接下来只需要搜索并安装armadillo,本人选用的版本为v7.800.0。
如果你之前没有用过nuget扩展,系统会提示你完全关闭visual studio,关闭后,程序将会自动安装该扩展,安装完毕后打开刚刚配置的项目,在“管理NuGet程序包”里面就能看见犰狳库已经安装成功了。
然后我们就可以使用它了,当然别忘了它的命名空间**
#include <armadillo>
using namespace arma;
基本操作
因为本人是按照matlab程序进行移植,所以就介绍一些该库中对应于matlab中矩阵操作的函数吧。
矩阵
首先是构造函数,可以直接用mat,如果该矩阵为方阵,就可以用 matnn 其中n为行/列数,n = [0,9]。
//默认构造一个空矩阵。!!!不是单位矩阵!!!
mat M;
//创建一个5行3列的矩阵
mat M1(5, 3);
//用一个矩阵初始化另一个矩阵
mat M2(M1);
//用标准库容器vector也可以初始化
std::vector<double> temp;
mat M3(temp);
//构造行列规模相同的矩阵
mat22 M4;
//构造全为0的矩阵
M4.fill(0