c++的armadillo库语法指南

c++的armadillo库语法指南

众所周知,armadillo库是一个很好的矩阵库,为了方便大家使用,给大家写了一份入门语法,可以留作使用。

初始化矩阵

mat A(2,3);

输出第n列/行

cout << "A.n_rows: " << A.n_rows << endl; 
cout << "A.n_cols: " << A.n_cols << endl;

访问元素(下标为0开始)

A(1,2) = 456.0; 

输出矩阵

A.print("A:");

改变矩阵大小(不保留矩阵中内容)

A.set_size(4,5);

将矩阵全部设为一个特定值

A.fill(5.0); 

给矩阵一个值

vectorise(A)A << 0.165300 << 0.454037 << 0.995795 << 0.124098 << 0.047084 << endr
    << 0.688782 << 0.036549 << 0.552848 << 0.937664 << 0.866401 << endr
    << 0.348740 << 0.479388 << 0.506228 << 0.145673 << 0.491547 << endr
    << 0.148678 << 0.682258 << 0.571154 << 0.874724 << 0.444632 << endr
    << 0.245726 << 0.595218 << 0.409327 << 0.367827 << 0.385736 << endr;

行列式

det(A)

逆矩阵

inv(A)

将矩阵存为一个文件

A.save("A.txt", raw_ascii);

从文件读取矩阵

B.load("A.txt");

子矩阵

B( span(0,2), span(3,4) )
B( 0,3, size(3,2) )
B.row(0)
B.col(1)vectorise(A)

转置

B.t()

每一列中最大的值

max(B)

每一行中最大的值

max(B,1)

B中最大的值

max(max(B))

每一列之和

sum(B)

每一行之和

sum(B,1)

所有的数之和

accu(B)

矩阵的迹(对角元之和)

trace(B)

生成单元阵

eye<mat>(4,4)

生成随机阵

randu<mat>(4,4)

行向量(相当于一行的矩阵)

rowvec r;
  r << 0.59119 << 0.77321 << 0.60275 << 0.35887 << 0.51683;

列向量(相当于一列的矩阵)

vec q;
  q << 0.14333 << 0.59478 << 0.14481 << 0.58558 << 0.60809;

将矩阵一列一列地排列,转换成向量

vectorise(A)

内积

as_scalar(r*q)

外积

q*r

乘法累加运算(MAC)

accu(A % B)

混合运算

B += 2.0 * A.t();

整数矩阵

imat AA;

布尔矩阵和矩阵元素比较

umat ZZ = (AA >= BB);

三维矩阵(slice为第三维度)

cube Q( B.n_rows, B.n_cols, 2 );
  
Q.slice(0) = B;
Q.slice(1) = 2.0 * B;

矩阵域(将矩阵作为块矩阵存在一个大矩阵中)

field<mat> F(4,3); 

for(uword col=0; col < F.n_cols; ++col)
for(uword row=0; row < F.n_rows; ++row)
{
F(row,col) = randu<mat>(2,3);  // each element in field<mat> is a matrix
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值