自用的矩阵运算库zhnmat使用说明

2023-05-16

自用的矩阵运算库zhnmat使用说明

  包含两个主要类:MatVector3d,可以用于一些简单的矩阵和三维向量场景,代码较简单,没有任何性能优化,可用于学习参考。
代码仓库
https://gitee.com/xd15zhn/zhnmat
https://github.com/xd15zhn/zhnmat
安装教程建议参考
(二)EGE安装与配置 -CSDN博客

一个简单的例子

//main.cpp
#include <iostream>
#include "zhnmat.hpp"
using namespace std;
using namespace zhnmat;
int main() {
    Mat A(2, 2, vector<double>{1, 2, 3, 4});
    Mat B(2, 2, vector<double>{1, 2, 3, 4});
    cout << A*B << endl;
}
# CMakeLists.txt
cmake_minimum_required(VERSION 3.12)
project(untitled)
set(CMAKE_BUILD_TYPE release)
set(CMAKE_PREFIX_PATH "C:/Users/xd15zhn/Documents/cpplibraries")
add_executable(${CMAKE_PROJECT_NAME} main.cpp)
find_package(zhnmat REQUIRED)
message(STATUS "zhnmat_VERSION: ${zhnmat_VERSION}")
message(STATUS "zhnmat_DIR: ${zhnmat_DIR}")
message(STATUS "zhnmat_LIBS: ${zhnmat_LIBS}")
message(STATUS "zhnmat_INCLUDE_DIRS: ${zhnmat_INCLUDE_DIRS}")
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC ${zhnmat_LIBS})
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC ${zhnmat_INCLUDE_DIRS})

其它功能

与MATLAB对应的初始化方法

MATLAB 写法:

A = zeros(1, 5);
B = ones(1, 5);
C = 10 * ones(1, 5);
D = [-14,-6,-4; 0,13,0; -19,-20,-21]

对应的 zhnmat 写法:

Mat A(1, 5);
Mat B(1, 5, 1);
Mat C(1, 5, 10);
Mat D(3, 3, vector<double>{-14,-6,-4, 0,13,0, -19,-20,-21});

矩阵操作

取出部分元素(切片)

Mat B(4, 4);
Mat A = B.atr(0);  // 取出第0行元素
Mat A = B.atc(0);  // 取出第0列元素
Mat A = B(Rect(0, 1, 3, 2));  // 取出从第0行第1列开始的3行2列元素

串联

Mat C1(1, 3, vecdble{1, 1, 0});
Mat C2 = eye(3);  // 单位矩阵
Mat C = VConcat(C1, C2);

插入与删除

    vecdble data;
    for (size_t i = 0; i < 9; i++)
        data.push_back(rand());
    Mat A(3, 3, data);
    Mat ins(1, 3, vecdble{1, 1, 1});
    Mat B = Insertr(A, 1, ins);  // 将给定矩阵插入到第1行(下标从0开始)
    Mat C = Deletec(B, 2);  // 删除第2列(下标从0开始)
    Mat::_format.rowout = ";\n";
    cout << A << endl;
    cout << B << endl;
    cout << C << endl;

修改打印格式

下面的代码可以将矩阵输出成可用于 markdown 或 LaTeX \LaTeX LATEX 的格式。

    Mat A(4, 3, vector<double>{
        0, 0, 0,
        -3.91895953790310, -5.23722226983912, -0.000310564114977309,
        0.0736634979806905, 0.0984424841255557, 0.00603621863958453,
        1.89333312742797, 0.364831438915809, 8.57639360143337e-05,
    });
    Mat::Set_Precision(6);  // 保留6位有效数字
    Mat::_format.prefix = "[";  // 输出矩阵之前先输出的字符串
    Mat::_format.rowin = " & ";  // 一行内每个元素之间插入的字符串
    Mat::_format.rowout = " \\\\\n";  // 两行之间输出的字符串
    Mat::_format.suffix = "]";  // 输出矩阵之后继续输出的字符串
    cout << A << endl;

输出为

[0 & 0 & 0 \\
-3.91896 & -5.23722 & -0.000310564 \\
0.0736635 & 0.0984425 & 0.00603622 \\
1.89333 & 0.364831 & 8.57639e-05]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自用的矩阵运算库zhnmat使用说明 的相关文章

  • strapi-api使用说明

    strapi controllers 返回项目中可用的控制器的对象 位于该 api controllers文件夹中的每个JavaScript文件都将被解析为该strapi controllers对象 由于这个对象 xff0c 您可以访问项目
  • TTP223使用说明

    管脚定义 xff1a 引脚号 引脚名称 I O 简单描述 1 Q O CMOS输出 2 VSS P 电源脚 3 IN I O 触摸输入 4 AHLB
  • GCC使用说明

    超详细的参考官方手册下载地址 https download csdn net download qq 34991787 16188604 GCC代表 GNU编译器合集 可编译C C 43 43 Objective C Objective C
  • TortoiseSVN Client使用说明

    1 TortoiseSVN的安装 当前使用的TortoiseSVN为 xff1a TortoiseSVN 1 14 1 29085 x64 svn 1 14 1 msi xff0c 下载安装地址 xff1a Downloads Tortoi
  • ElasticSearch6.2.5使用说明

    第一章 ElasticSearch入门篇 第一节 ElasticSearch概述 ElasticSearch是一个基于Lucene的搜索服务器 它提供了一个分布式多用户能力的全文搜索引擎 xff0c 基于RESTfulweb接口 Elast
  • grub.cfg使用说明

    grub 参数设置参考说明 一 grub cfg详解 说明 xff1a grub cfg默认为只读 xff0c 需要个性化配置文件的 xff0c 建议不要直接修改grub cfg xff0c 请参考链接的pdf文档和google文档 set
  • docker swarm 使用说明

    docker swarm 使用说明 swarm 命令 xff1a 管理集群 docker swarm command root 64 centos docker swarm help Usage docker swarm COMMAND M
  • javascript 数组方法 slice() 的使用说明

    slice 的英译为 切片的意思 xff0c 就是截取一个片段 javascript的数组对象有一个方法slice xff0c 通过索引位置从原数组中截取一个片段构成新的数组 xff0c 该方法不会修改原数组 xff0c 只是返回一个新的子
  • nodejs中的__filename和__dirname的使用说明

    在node js开发中 xff0c 有时候需要获取一些环境变量 xff0c 其中 filename和 dirname 是两个有用的环境变量 dirname 获取的是调用 dirname的脚本文件本身的绝对路径 xff0c 不是启动脚本文件的
  • 微信3.1.0.41逆向-微信3.1.0.41HOOK接口(WeChatHelper3.1.0.41.dll)使用说明

    为了节省微信HOOK开发时间 xff0c 现将微信HOOK注入DLL接口给大家 xff0c 本接口从3 0 0 47版本开始 xff0c 最新版本3 1 0 41 xff0c 后续会根据自己的时间升级 xff0c 本接口用vc 43 43
  • 微信3.1.0.72逆向-微信3.1.0.72HOOK接口(WeChatHelper3.1.0.72.dll)使用说明-更改好友备注

    功能 xff1a 更改好友备注Method xff1a POSTHttp xff1a http 127 0 0 1 8080 数据格式JSON 34 cmdid 34 17 34 param1 34 34 微信ID 34 34 param2
  • StreamEye使用说明

    编译相关索引 xff1a https blog csdn net knowledgebao article details 84973055 官网 xff1a https www elecard com products video ana
  • easyplayerpro 使用说明_EasyPlayerPro(Windows)流媒体播放器开发之跨语言调用

    下面我们来讲解一下关于EasyPlayerPro接口的调用 xff0c 主要分为C 43 43 和C 两种语言 xff0c C 43 43 也可以基于VC和QT进行开发 xff0c C 43 43 以VC MFC框架为例进行讲解 xff0c
  • .adoc使用说明

    开发过程中 xff0c 部分开源代码文档中出现了 adoc文件 xff0c 为了了解并使用这个文件 xff0c 简单记录以下功能和用法 xff0c 方便后续查阅使用 what xff1a AsciiDoc file 标记语言 why xff
  • Sphinx使用说明

    link https blog csdn net sinat 29957455 article details 83657029 1 安装插件 xff1a pip3 install sphinx pip3 install sphinx rt
  • grub.cfg使用说明

    grub 参数设置参考说明 一 grub cfg详解 说明 xff1a grub cfg默认为只读 xff0c 需要个性化配置文件的 xff0c 建议不要直接修改grub cfg xff0c 请参考链接的pdf文档和google文档 set
  • Nokov使用说明(Windows系统)

    Nokov使用说明 第一步 镜头硬件调节1 连接镜头 xff0c 打开Seeker软件 xff08 以下简称软件 xff09 2 放置标定框3 调节镜头4 调焦1 xff09 调节后环 xff1a 光圈调到最大2 xff09 调节前环 xf
  • B6AC使用说明

    1 接线方式 接线如下图所示 xff0c 如果电池是XT60 xff0c 可以用接鳄鱼夹子的T插夹在XT60的接口上 2 设置方法 2 1 锂电池充电 1 xff09 Batt Type gt 切换选择 LiPo BATT gt Enter
  • robot_pose_ekf 使用说明

    协方差参数的设置 主要确定mpu6050和odom编码器协方差参数的设置 参考 xff1a turtlebot node协方差的设置 mpu605参数的设置 参考 xff1a https github com Arkapravo turtl
  • TI的ADS8320使用说明

    在调试程序的过程中遇到一个奇怪的现象 xff0c 使用ADS8320的16位AD采样温度数据 xff0c 在实际使用过程中遇到问题 xff0c 记录如下 xff1a 初始化 ADS8320 拉低片选 读取16位数据 拉高片选 使用STM32

随机推荐

  • 静态路由(也许是目前最全的)

    今天在公司 xff0c 新来了个实习生 xff0c 突然问道静态路由的问题 xff0c 他跟我讲他不会设置 然后我就很尴尬 xff0c 因为这个毕竟是基础知识嘛 所以今天整理了一下静态路由的知识 xff0c 跟大家分享一下 目录 一 路由器
  • C# 读取Json文件--代码示例

    1 C 读取Json文件 JsonConvert SerializeObject str object to string JsonConvert DeserializeObject obj string to json 2 Json文件创
  • 网络地址转换协议——NAT(恐怕是最全的版本)

    前天我说第二天要跟大家讲一下NAT的 xff0c 结果放假有些懒 xff0c 所以就放在今天更新 xff0c 希望大家不要凶我 xff0c 哈哈哈 目录 一 什么是NAT 1 NAT简介 2 NAT作用 3 NAT内网地址的范围 4 主要应
  • linux日志文件详解

    目录 一 日志文件的分类二 日志文件位置三 常见日志文件1 分析日志文件2 内核及系统日志 四 日志消息等级五 日志文件分析1 用户日志2 程序日志 六 日志分析注意事项 一 日志文件的分类 日志文件是用于记录Linux系统中各种运行消息的
  • 虚拟化与docker基础

    文章目录 一 虚拟化1 虚拟化概述2 虚拟化的功能3 虚拟化的三种模式4 容器与虚拟化 二 Docker1 容器概述2 Docker概述3 Docker的设计宗旨4 容器与虚拟机的区别5 容器在内核中支持两种重要的技术6 Docker核心概
  • Docker容器网络模式与数据管理

    文章目录 一 Docker容器操作1 容器创建2 查看容器的运行状态3 启动容器4 创建并开启容器5 终止容器运行6 容器的进入7 复制文件到容器中 宿主机中8 容器的导出与导入9 删除容器 二 Docker网络1 Docker网络实现原理
  • docker镜像的创建与dockerfile

    文章目录 一 docker镜像的创建1 创建镜像的方法2 基于现有镜像创建3 基于本地模板创建4 基于dockerfile创建 二 Dockerfile1 概述2 Dockerfile结构3 Dockerfile镜像结构的分层4 Docke
  • matlab中值滤波实现

    中值滤波是一种典型的非线性滤波 xff0c 是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术 xff0c 基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值 xff0c 让周围的像素值接近真实的值从而消除孤立的噪声点 该方
  • 程序员的情人节

    今天是一个好的节日 xff0c 七夕呀 xff01 程序是最好的女朋友 xff0c 它是不会骗你的 它偶尔会发些小的情绪 只是你没有懂它
  • stm32-Hardfault及内存溢出的查找方法

    STM32内存结构 1 要点 1 1 两种存储类型 RAM 和 Flash RAM可读可写 xff0c 在STM32的内存结构上 xff0c RAM地址段分布 0x2000 0000 0x2000 0000 43 RAM size Flas
  • raylib部分源代码功能解读

    官网 https www raylib com https github com raysan5 raylib 我根据自己的需求裁剪了多余功能后的代码 xff1a https gitee com xd15zhn raylib https g
  • 无量纲处理、量纲变换与实时仿真理论

    基本原理 万有引力公式 d 2 r
  • 局域网windows平台下时间同步

    最近单位出现很多应为系统时间不统一造成的问题 xff0c 如 客户机时间与服务器时间不同步 xff0c 而客户机使用软件是读取本机时间上传服务器 xff0c 这样就会造成排序错误 每次开机修改很繁琐 我就想到了在局域网内假设时间服务器的想法
  • 水下潜航器的建模与控制

    线性系统理论大作业 待完成 题目 水下潜器模型 xff0c 可能是潜艇或者鱼雷等对象 一个主推进螺旋桨 xff0c 前后两对水平陀翼 xff0c 后面一对垂直陀翼 潜器前进过程中 xff0c 通过调节助推进螺旋桨推力 xff0c 以及三对陀
  • 演化博弈、复制动态方程与仿真

    本文只整理和总结一下我的理解 xff0c 文末列出了可供参考的更详细完整的资料 建议先看参考资料 1 xff08 博弈论公开课 xff09 的博弈论课程 xff0c 可以直接从第11讲开始看 参考链接 2 是关于演化博弈非常经典的一本书 参
  • 演化博弈方法用于多智能体系统最优资源分配

    演化博弈方法用于多智能体系统最优资源分配 Evolutionary game theoretic approach for optimal resource allocation in multi agent systems 论文复现见 论
  • [论文复现]演化博弈方法用于多智能体系统最优资源分配

    原文 演化博弈方法用于多智能体系统最优资源分配 CSDN博客 https ieeexplore ieee org document 8243778 问题描述 有2种资源分配给6个个体 xff0c 2种资源的总量分别为 y 1 61 545
  • 基于博弈学习的分布式卫星任务规划

    基于博弈学习的分布式卫星任务规划 Distributed Satellite Mission Planning via Learning in Games 摘要 对地观测卫星群的任务规划是一个复杂的问题 xff0c 它提出了重大的理论和技术
  • 多星分布式任务分配中的博弈自组织

    多星分布式任务分配中的博弈自组织 Game theoretic self organization in multi satellite distributed task allocation 论文复现见 论文复现 多星分布式任务分配中的博
  • 自用的矩阵运算库zhnmat使用说明

    自用的矩阵运算库zhnmat使用说明 包含两个主要类 xff1a Mat和Vector3d xff0c 可以用于一些简单的矩阵和三维向量场景 xff0c 代码较简单 xff0c 没有任何性能优化 xff0c 可用于学习参考 代码仓库 htt