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

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、结果
这里写图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值