关闭

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

1793人阅读 评论(0) 收藏 举报
分类:

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

2
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:140379次
    • 积分:1733
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:9篇
    • 译文:6篇
    • 评论:24条
    文章分类
    最新评论