当前位置: 首页 > news >正文

笔记93:关于 C++ 中的 Eigen 库

注意1:Eigen 是一个基于 C++ 模板的线性代数库,以支持在 C++ 中进行矩阵运算;

注意2:要在 C++ 中使用 Eigen,需要在在程序开始前要包含所需头文件路径;

#include <Eigen>

a

a

基础用法汇总


定义向量

Eigen::Vector2d x(1,2)     // 2维向量
Eigen::Vector3d x(1,2,3)   // 3维向量
Eigen::VectorXd x(n)       // 自定义n维向量

定义矩阵

Eigen::Matrix2d mat                  // 2维矩阵
Eigen::Matrix3d mat                  // 3维矩阵
Eigen::Matrix4d mat                  // 4维矩阵
Eigen::MatrixXd mat(m,n)             // 自定义m行,n列矩阵
Eigen::Matrix <double, m, n> mat;    // 自定义m行,n列矩阵

初始化特殊矩阵

Eigen::MatrixXd::Identity(m, n);        //单位矩阵
Eigen::MatrixXd::Zero(m, n);            //全零矩阵
Eigen::MatrixXd::Ones(m, n);            //全一矩阵
Eigen::MatrixXd::Random(m, n);          //随机矩阵

注意:如果想得到一个特殊矩阵,那么要先将矩阵的形状定义出来,然后再给这个矩阵胚子赋值,使其成为特殊矩阵;如下示例;

Eigen::Matrix3d mat;                //先定义
Eigen::MatrixXd::Identity(m, n);    //后赋值(初始化)

对向量/矩阵赋值

Eigen::VectorXd x(n)   //先定义
x(1) = 2;              //后赋值
Eigen::MatrixXd mat(2,2)   //先定义
mat << 1,2,3,4;                //赋值方式1
mat(0,1) = 2               //赋值方式2

矩阵运算

注意:对于加减乘除运算,定义矩阵/向量时所调用的类,已经将这些基础运算重载过了,只要两边都是符合要求的矩阵/向量类型,就可以直接使用这些操作符进行矩阵运算;

mat.inverse();           //逆矩阵
mat.dot(w);              //向量mat点积向量w
mat.cross(w);            //向量mat叉乘向量w
mat.transpose()          //转置
mat.norm()               //向量求模,矩阵范数

矩阵属性

vec.size();            //访问向量长度
mat.rows();            //访问矩阵行数
mat.cols();            //访问矩阵列数
mat.block<m,n>(i,j)    //矩阵块操作,从i,j开始,取m×n大小的矩阵
mat.minCoeff();        //输出矩阵中最大的元素
mat.maxCoeff();        //输出矩阵中最小的元素
MatrixXd mMat(4,4);
mMat << 11, 10, 13, 15,3, 24, 56,	1,2, 12, 45,	0,8, 5,	6,	4;
double min = mMat.minCoeff();    //输出0
double max = mMat.maxCoeff();    //输出56

a

a

参考文章:

  • [C++]Eigen库常用函数_eigen::vector2d-CSDN博客
  • Eigen库使用之矩阵的最大/小值及其位置_maxcoeff-CSDN博客

相关文章:

笔记93:关于 C++ 中的 Eigen 库

注意1&#xff1a;Eigen 是一个基于 C 模板的线性代数库&#xff0c;以支持在 C 中进行矩阵运算&#xff1b; 注意2&#xff1a;要在 C 中使用 Eigen&#xff0c;需要在在程序开始前要包含所需头文件路径&#xff1b; #include <Eigen> a a 基础用法汇总 定义向量 E…...

【微服务】部署mysql集群,主从复制,读写分离

两台服务器做如下操作 1.安装mysqldocker pull mysql:5.72.启动以及数据挂载 mkdir /root/mysql/data /root/mysql/log /root/mysql/conf touch my.conf //mysql的配置文件docker run --name mysql \ -e MYSQL_ROOT_PASSWORD123456 \ -v /root/mysql/data:/var/lib/mysql \ -v…...

【Java】设计一个支持敏感数据存储和传输安全的加解密平台

一、问题解析 在一个应用系统运行过程中&#xff0c;需要记录、传输很多数据&#xff0c;这些数据有的是非常敏感的&#xff0c;比如用户姓名、手机号码、密码、甚至信用卡号等等。这些数据如果直接存储在数据库&#xff0c;记录在日志中&#xff0c;或者在公网上传输的话&…...

iOS AVFoundation 音视频源码分享

引言 在现代移动开发中&#xff0c;音视频处理是一个不可忽视的重要领域。iOS 提供了强大的 AVFoundation 框架&#xff0c;使开发者能够轻松实现音视频录制、播放、编辑等功能。无论是创建高效的视频播放器&#xff0c;还是实现复杂的音频处理&#xff0c;AVFoundation 都能提…...

Ubuntu开发入门之“制作Ubuntu rootfs根文件系统镜像“

Ubuntu开发入门之“制作Ubuntu rootfs根文件系统镜像” 问题描述解决方法1.首先从官网下载最基础的ubuntu base核心文件,ubuntu core.2.接下来就是制作一个基础功能的根文件系统3.修改可用源4.接下来就是挂载根文件系统,进行模拟安装应用5.根文件系统安装常用的工具和配置用户…...

基于FPGA的SystemVerilog练习

文章目录 一、认识SystemVerilogSystemVerilog的语言特性SystemVerilog的应用领域SystemVerilog的优势SystemVerilog的未来发展方向 二、流水灯代码流水灯部分testbench仿真文件 三、用systemVerilog实现超声波测距计时器测距部分led部分数码管部分采样部分顶层文件引脚绑定效果…...

【数据结构】详解堆的基本结构及其实现

文章目录 前言1.堆的相关概念1.1堆的概念1.2堆的分类1.2.1小根堆1.2.2大根堆 1.3堆的特点堆的实用场景 2.堆的实现2.1初始化2.2插入2.3堆的向上调整2.4删除2.5堆的向下调整2.6判空2.7获取堆顶元素2.8销毁 3.堆排序3.1实现3.2堆排序的时间复杂度问题 前言 在上一篇文章中&#…...

python无限弹窗的代码

一个简单的Python代码示例&#xff0c;用于在特定的时间间隔内显示一个简单的弹窗。这个代码使用了Python的tkinter库来创建一个简单的GUI窗口。 python import tkinter as tk import time def popup(): popup_window.deiconify() # 显示窗口 popup_window.wait_window() # 等…...

多线程新手村5--线程池

1.1 线程池是什么 线程诞生的意义是因为进程的创建/销毁开销太大&#xff0c;所以使用线程提高代码的执行效率&#xff1b;那如果想要进一步提升执行效率&#xff0c;该怎么办呢&#xff1f;有一个方法是使用线程池。 首先&#xff0c;什么是线程池&#xff1a;池就是池子&am…...

数据库 mysql 的彻底卸载

MySQL卸载步骤如下&#xff1a; &#xff08;1&#xff09;按 winr 快捷键&#xff0c;在弹出的窗口输入 services.msc&#xff0c;打开服务列表。 &#xff08;2&#xff09;在服务列表中&#xff0c; 找到 mysql 开头的所有服务&#xff0c; 右键停止&#xff0c;终止对应的…...

Meterpreter工具使用

Meterpreter属于stage payload&#xff0c;在Metasploit Framework中&#xff0c;Meterpreter是一种后渗透工具&#xff0c;它 属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注 入”理念实现的&#xff0c;它能够通过创建一个新进…...

第四讲 单片机STC89C52+RA8889代码移植范例(包含API接口)

本次介绍单片机STC89C52RA8889代码移植范例&#xff0c;该范例已将RA8889的API移植好了&#xff0c;下方提供下载地址。 硬件平台&#xff1a;89C52RA8889 采用SPI通信方式 (已测试通过&#xff09; 上一讲已经阐述RA8889移植到51单片机的基本方法&#xff0c;本讲增加了API…...

QT 音乐播放器【一】 显示音频级别指示器

文章目录 效果图概述代码总结 效果图 概述 QMediaPlayer就不介绍了&#xff0c;就提供了一个用于播放音频和视频的媒体播放器 QAudioProbe 它提供了一个探针&#xff0c;用于监控音频流。当音频流被捕获或播放时&#xff0c;QAudioProbe 可以接收到音频数据。这个类在需要访问…...

【MATLAB源码-第220期】基于matlab的Massive-MIMO误码率随着接收天线变化仿真采用ZF均衡和QPSK调制。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 系统背景与目标 无线通信系统的发展极大地推动了现代通信技术的进步&#xff0c;从移动通信到无线局域网&#xff0c;甚至是物联网&#xff0c;均依赖于无线通信系统的高效和可靠性。在无线通信系统中&#xff0c;核心目…...

【前端】政务服务大数据可视化监控平台(源码+html+css+js)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…...

【网关】工业智能网关-02

一 公司简介 保定飞凌嵌入式技术有限公司始于2006年&#xff0c;是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业&#xff0c;是国内最早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累&#xff0c;公司拥有业内一流的软硬件研发团队&#xff0c;在北京…...

【C语言】动态内存管理技术文档

【C语言】动态内存管理技术文档 目录 【C语言】动态内存管理技术文档 一、内存管理基础...

低空经济的意义所在

发展低空经济对于推动经济发展、促进产业升级、降低运输成本、构建综合交通系统等方面都具有重要意义。低空经济对推动经济发展提供新动能。低空经济作为新兴产业&#xff0c;具有巨大的发展潜力&#xff0c;能够带动投资、促进消费&#xff0c;为经济增长注入新动力。除此之外…...

DNF手游攻略:0氪攻略,转职技巧与避坑指南!

在DNF手游的冒险旅程中&#xff0c;角色的转职是一次重要的成长经历。通过转职&#xff0c;玩家可以获得全新的技能和属性&#xff0c;提升自己在地下城中的战斗力。本文将为您介绍转职后的关键技巧和日常任务&#xff0c;帮助您更好地适应新的职业身份&#xff0c;成为地下城中…...

周报 | 24.5.27-24.6.2文章汇总

为了更好地整理文章和发表接下来的文章&#xff0c;以后每周都汇总一份周报。 周报 | 24.5.20-24.5.26文章汇总-CSDN博客 集智书童 | YOLOv10开源&#xff5c;清华用端到端YOLOv10在速度精度上都生吃YOLOv8和YOLOv9_yolov8 yolov10-CSDN博客 机器之心 | 清华接手&#xff0c…...

一键生成爆炸图:Nano-Banana拆解引擎在产品说明书制作中的应用

一键生成爆炸图&#xff1a;Nano-Banana拆解引擎在产品说明书制作中的应用 1. 产品拆解可视化的行业痛点 在产品说明书、维修手册和教育材料的制作过程中&#xff0c;清晰展示产品内部结构和组件关系是至关重要的。传统方法通常面临三大挑战&#xff1a; 3D建模成本高&#…...

标题诊断报告如何与其他 SEO 数据结合分析

标题诊断报告在SEO中的重要性 在当今的数字营销世界中&#xff0c;标题诊断报告是每一个SEO优化者都必须了解和运用的工具。标题不仅是吸引用户点击的关键因素&#xff0c;也是搜索引擎评估页面相关性的重要元素。掌握如何有效利用标题诊断报告&#xff0c;可以帮助你提高网站…...

影墨·今颜模型Win11/Win10系统UI风格适配与生成测试

影墨今颜模型Win11/Win10系统UI风格适配与生成测试 最近在折腾桌面美化&#xff0c;突然冒出一个想法&#xff1a;现在AI生成图片这么厉害&#xff0c;能不能让它直接帮我生成一套风格统一的系统UI元素呢&#xff1f;比如Win11那种清爽现代的图标&#xff0c;或者Win10那种经典…...

Phi-4-reasoning-vision-15B实操手册:强约束提示词设计与错误行为规避

Phi-4-reasoning-vision-15B实操手册&#xff1a;强约束提示词设计与错误行为规避 1. 引言&#xff1a;当视觉模型“自作主张”时&#xff0c;我们该怎么办&#xff1f; 你上传了一张软件界面的截图&#xff0c;想问问某个按钮是干什么用的。结果模型没回答你的问题&#xff…...

别再死记硬背了!用Codesys可视化玩转按钮和指示灯:5个工业场景实战案例拆解(含配方管理思路)

Codesys可视化实战&#xff1a;5个工业场景下的按钮与指示灯高阶应用 在工业自动化领域&#xff0c;人机界面(HMI)的设计直接影响操作效率和系统可靠性。传统PLC编程往往过于关注功能实现而忽视交互体验&#xff0c;导致许多工业现场的操作面板充斥着杂乱无章的按钮和难以理解的…...

SGLang-v0.5.6应用教程:快速构建API服务,支持约束解码生成指定格式

SGLang-v0.5.6应用教程&#xff1a;快速构建API服务&#xff0c;支持约束解码生成指定格式 1. SGLang简介与核心能力 SGLang&#xff08;Structured Generation Language&#xff09;是一个专注于大模型推理优化的高性能框架。它通过创新的架构设计&#xff0c;有效解决了传统…...

YOLO12与YOLO11对比:新一代模型在精度和速度上有哪些提升?

YOLO12与YOLO11对比&#xff1a;新一代模型在精度和速度上有哪些提升&#xff1f; 1. 引言 目标检测技术作为计算机视觉领域的核心任务之一&#xff0c;其发展一直备受关注。YOLO(You Only Look Once)系列模型因其出色的实时性能而广受欢迎。2025年&#xff0c;Ultralytics推…...

Python高效处理字符串去重的5种实用技巧

1. 字符串去重的核心逻辑与应用场景 字符串去重是数据处理中最基础却高频的操作之一。想象你手里有一串钥匙&#xff0c;其中几把是重复的&#xff0c;去重就是帮你挑出唯一的那几把。在Python中处理用户输入、日志清洗或数据预处理时&#xff0c;我经常遇到需要去除重复字符的…...

从DH参数到3D动画:手把手教你用SimMechanics在Simulink里‘拼’出一个六轴机械臂

从DH参数到3D动画&#xff1a;手把手教你用SimMechanics在Simulink里‘拼’出一个六轴机械臂 刚接触机器人学的同学常会遇到这样的困境&#xff1a;DH参数表背得滚瓜烂熟&#xff0c;但面对真实的机械臂结构时&#xff0c;那些α、a、d、θ参数突然变得抽象难懂。我在研究生阶段…...

Leaflet 结合 leaflet-velocity 实现动态风场可视化的实战指南

1. 从零开始搭建风场可视化环境 第一次接触风场可视化时&#xff0c;我被那些动态流动的粒子效果深深吸引。作为Web地图开发中最酷炫的效果之一&#xff0c;用Leaflet实现风场展示其实比你想象的简单得多。我们先从最基础的环境搭建说起。 我推荐使用VSCode作为开发工具&#x…...