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

原创 2015年07月09日 19:09:19

1、矩阵的四则运算

A、通过”+”、“-”、”*”、”/”、”%”分别进行矩阵的加、减、乘、点除、点乘运算。
B、示例

#include <iostream>
#include <armadillo>
using namespace arma;
int main()
{
    //1、构造矩阵A、B
    mat A(2,2),B(2,2);
    for (int i = 0; i < 4; i++)
    {
        A(i)=i+1;//i:以列为排列顺序,矩阵的第i个元素
        B(i)=i+5;
    }
    A.print("矩阵A为:");
    B.print("矩阵B为:");
    //2、矩阵A与矩阵B相加
    mat AAddB = A + B;
    AAddB.print("A + B =");
    //3、矩阵A与矩阵B相减
    mat AMinusB = A - B;
    AMinusB.print("A - B =");
    //4、矩阵A与矩阵B相乘
    mat AMulB = A * B;
    AMulB.print("A * B =");
    //5、矩阵A与矩阵B点除
    mat ADiviB = A / B;
    ADiviB.print("A / B =");
    //6、矩阵A与矩阵B点乘
    mat ADotMulB = A % B;
    ADotMulB.print("A % B =");
}

C、结果
这里写图片描述

2、矩阵的逆与伪逆

A、通过”inv(A)”、“pinv(A)”分别求矩阵A的逆与伪逆矩阵。
B、示例

#include <iostream>
#include <armadillo>
using namespace arma;
int main()
{
    //1、产生随机矩阵A,大小为5x5,每个数的范围为:(0,10)
    mat A = randu<mat>(5, 5)*10;
    mat A_inv = inv(A);//当A为方阵时,用inv()
    mat A_pinv = pinv(A);//当A不为方阵时,用pinv()
    mat AMulA_inv = A * A_inv;//验证结果
    A.print("原矩阵A:");
    A_inv.print("矩阵A的逆矩阵为:");
    AMulA_inv.print("A * A^-1为:");
    A_pinv.print("矩阵A的伪逆矩阵为:");
}

C、结果
这里写图片描述

3、解线性方程组

A、通过”solve(A,B)”来解线性方程组:AX=B。
B、示例

#include <iostream>
#include <armadillo>
using namespace arma;
int main()
{
    //1、产生随机矩阵A,大小为5x5,每个数的范围为:(0,10)
    mat A = randu<mat>(5, 5)*10;
    //2、获取矩阵的第2列
    colvec B = A.col(1);
    //3、解线性方程组AX=B
    mat X = solve(A,B);
    X.print("X = ");
}

C、结果
这里写图片描述

Windows下Armadillo配置及测试

Windows下Armadillo库的配置以及使用测试
  • hijack00
  • hijack00
  • 2016年08月17日 11:04
  • 2587

C++线性代数库Armadillo

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

64位环境下:Armadillo + VS2013

在学习数据挖掘和机器学习的时候,很多时候,用矩阵求解的方法是很简便的,但是C++要完成矩阵运算,自己写实现显然是工程浩大的。因此我们常常借助第三方函数库来解决问题。 找了好几天基本线性代数的库,看到...
  • u014357799
  • u014357799
  • 2015年11月05日 22:31
  • 2326

C++下的Matlab的替代工具Armadillo C++ linear algebra library

Armadillo是一个C++开发的线性代数库,里面的矩阵运算功能非常给力,其函数兼顾了效率和易用性,函数接口和Matlab非常相似,该工具库支持基于Linux的操作系统、macOS系统和Window...
  • zhouxianen1987
  • zhouxianen1987
  • 2018年01月08日 15:25
  • 31

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

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

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 学习笔记(2)——矩阵的基本操作(1)

1、获取矩阵的某个元素A、通过nameMat(i,j)获取矩阵nameMat的第(i,j)个元素。 B、示例#include #include using namespace arma; int...
  • jnulzl
  • jnulzl
  • 2015年07月08日 21:20
  • 3541

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
  • 2101

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
  • 1800
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Armadillo C++ linear algebra library 学习笔记(4)——矩阵的运算
举报原因:
原因补充:

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