Armadillo C++ linear algebra library 学习笔记(2)——矩阵的基本操作(1)

原创 2015年07月08日 21:20:15

1、获取矩阵的某个元素

A、通过nameMat(i,j)获取矩阵nameMat的第(i,j)个元素。
B、示例

#include <iostream>
#include <armadillo>
using namespace arma;
int main()
{
    //1、产生随机矩阵A,大小为5x5,每个数的范围为:(0,10)
    mat A = randu<mat>(5, 5)*10;
    A.print("原矩阵A = \n");
    //2、输出矩阵A的第2行第3列元素
    cout<<"A的第(2,3)个元素为:"<<A(1,2)<<endl;
}

C、结果
这里写图片描述
说明:矩阵的下标与二维数组的下标一致。

2、矩阵的转置

A、通过调用函数“.t()”来进行矩阵的转置。
B、示例

#include <iostream>
#include <armadillo>
using namespace arma;
int main()
{
    //1、产生随机矩阵A,大小为5x5,每个数的范围为:(0,10)
    mat A = randu<mat>(5, 5)*10;
    A.print("原矩阵A = \n");
    //2、矩阵A的转置
    mat B = A.t();
    B.print("A的转置B = \n");
}

C、结果
这里写图片描述

3、获取矩阵的行数、列数及其矩阵的元素个数

A、通过调用函数“.n_rows”、“.n_cols”和“n_elem”获取矩阵的行数、列数和元素个数。
B、示例

#include <iostream>
#include <armadillo>
using namespace arma;
int main()
{
    //1、产生随机矩阵A,大小为5x5,每个数的范围为:(0,10)
    mat A = randu<mat>(5, 5)*10;
    A.print("原矩阵A = \n");
    //2、获取矩阵A的行数
    int A_rows = A.n_rows;
    cout<<"矩阵A的行数为:"<<A_rows<<endl;
    //3、获取矩阵A的列数
    int A_cols = A.n_cols;
    cout<<"矩阵A的列数为:"<<A_cols<<endl;
    //4、获取矩阵A的元素个数
    int A_n_elem = A.n_elem;
    cout<<"矩阵A的元素个数为"<<A_n_elem<<endl;
}

C、结果
这里写图片描述

4、获取矩阵的某一行与某几行

A、通过调用函数“.row(i)”和“.rows(i,j)”获取矩阵的某一行与某几行。
B、示例

#include <iostream>
#include <armadillo>
using namespace arma;
int main()
{
    //1、产生随机矩阵A,大小为5x5,每个数的范围为:(0,10)
    mat A = randu<mat>(5, 5)*10;
    A.print("原矩阵A = \n");
    //2、获取矩阵A的第2行
    rowvec A_row = A.row(1);
    A_row.print("矩阵A的第2行为:\n");
    //3、获取矩阵A的第2到第4行
    mat   A_rows = A.rows(1,3);
    A_rows.print(""矩阵A的第2行到底4行为:\n"");
}

C、结果
这里写图片描述

5、获取矩阵的某一列与某几列

获取矩阵某一列与某几列的方法与获取矩阵某一行与某几行的方法基本相同,只需调用函数“.col(i)”和“.cols(i,j)”即可。因此,这里不再赘述。

6、获取原矩阵的子矩阵

A、通过调用函数“.submat(span(p,q),span(r,s))”来获取原矩阵第p到第q行与第r到第s列所交叉的部分——子矩阵。
B、示例

#include <iostream>
#include <armadillo>
using namespace arma;
int main()
{
    //1、产生随机矩阵A,大小为5x5,每个数的范围为:(0,10)
    mat A = randu<mat>(5, 5)*10;
    A.print("原矩阵A = \n");
    //2、获取A的第2:4行和2:4列子矩阵
    mat A_pq_rs = A.submat(span(1,3),span(1,3));
    A_pq_rs.print("矩阵A的第2:4行和2:4列子矩阵");
}

C、结果
这里写图片描述

C++线性代数库Armadillo

做机器学习的同学一定对Matlab矩阵运算的简洁高效映像深刻,并且已经习以为常这种便捷。但实际工作中,我们经常需要将matlab代码移植成C/C++。       C++下的线性代数库诸如lapack...
  • u011747351
  • u011747351
  • 2015年06月21日 10:57
  • 3425

Armadillo注册机使用教程.rar

  • 2009年05月12日 00:45
  • 1.18MB
  • 下载

Armadillo4.4穿山甲加密教程(详细图文)

好了,废话不多说,我们上图,下面上传的12张图详细介绍了加密过程,我这里就不再打字了! 好了,以上...
  • A1200266
  • A1200266
  • 2017年05月02日 15:16
  • 653

Armadillo C++ linear algebra library 学习笔记(3)——矩阵的基本操作(2)

1、重置矩阵为空矩阵A、通过调用”.reset()”来重置原始矩阵为空矩阵。 B、示例#include #include using namespace arma; int main() { ...
  • jnulzl
  • jnulzl
  • 2015年07月09日 18:33
  • 1874

Armadillo C++ linear algebra library 学习笔记(4)——矩阵的运算

1、矩阵的四则运算A、通过”+”、“-”、”*”、”/”、”%”分别进行矩阵的加、减、乘、点除、点乘运算。 B、示例 //1、构造矩阵A、B mat A(2,2),B(2,2); ...
  • jnulzl
  • jnulzl
  • 2015年07月09日 19:09
  • 2631

Armadillo C++ linear algebra library 学习笔记(6)——生成矩阵

1、主对角线为1的矩阵A、通过调用”eye(rows, cols)”函数生成主对角线为1的矩阵。 B、示例#include #include using namespace arma; int...
  • jnulzl
  • jnulzl
  • 2015年07月17日 16:40
  • 2099

Armadillo C++ linear algebra library 学习笔记(7)——统计相关函数

1、求矩阵行、列的最大值A、通过调用”max(A, dim)”函数求矩阵A的行(dim=1)、列(dim=0)最大值。 B、示例#include #include using namespace...
  • jnulzl
  • jnulzl
  • 2015年07月17日 17:12
  • 1836

Armadillo C++ linear algebra library 学习笔记(5)——矩阵的分解

1、矩阵的SVD分解A、通过调用”svd(X)”函数进行矩阵X的奇异值分解(svd)。 B、示例 //1、产生随机矩阵A,大小为5x5,每个数的范围为:(0,10) mat A = r...
  • jnulzl
  • jnulzl
  • 2015年07月09日 22:33
  • 1799

Armadillo C++ linear algebra library 学习笔记(1)——简介与安装

1、Armadillo C++ 简介 Armadillo C++ Library是一种C++的线性代数库(矩阵数学)以取得良好的平衡速度与易用性。整数,浮点,而复杂的数字支持,以及一个子集,三角和统...
  • jnulzl
  • jnulzl
  • 2015年07月08日 20:58
  • 3759

Qt下Armadillo矩阵函数库的添加

其实本文严格说只能算VS2013添加Armadillo教程,因为为了省事,用的是VS2013编译器版本的Qt,Armadillo也直接用了自带例子中的blas_win64_MT.dll、blas_wi...
  • sandeepin
  • sandeepin
  • 2017年03月08日 09:01
  • 517
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Armadillo C++ linear algebra library 学习笔记(2)——矩阵的基本操作(1)
举报原因:
原因补充:

(最多只允许输入30个字)