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

Eigen 稀疏矩阵操作

在许多应用中(例如,有限元方法),通常处理非常大的矩阵,其中只有少数系数不为零。在这种情况下,可以通过使用仅存储非零系数的专用表示来减少内存消耗并提高性能。这样的矩阵称为稀疏矩阵。

1. 稀疏矩阵模块

模块

头文件

内容

SparseCore

#include <Eigen/SparseCore>

SparseMatrix 和 SparseVector 类、矩阵组装、

基本稀疏线性代数(包括稀疏三角求解器)

SparseCholesky

#include <Eigen/SparseCholesky>

直接用稀疏 LLT 和 LDLT Cholesky 分解来解决稀疏自伴随正定问题

SparseLU

#include<Eigen/SparseLU>

稀疏 LU 分解来解决一般平方稀疏系统

SparseQR

#include<Eigen/SparseQR

用于解决稀疏线性最小二乘问题的稀疏 QR 分解

IterativeLinearSolvers

#include <Eigen/IterativeLinearSolvers>

求解大型一般线性平方问题的迭代求解器(包括自伴随正定问题)

Sparse

#include <Eigen/Sparse>

包含以上所有模块

2. 稀疏矩阵格式

SparseMatrix 类是 Eigen 稀疏模块的主要稀疏矩阵表示; 它提供高性能和低内存使用率。 它实现了广泛使用的压缩列(或行)存储方案的更通用的变体。 它由四个紧凑的数组组成:

Values:存储非零系数值。
InnerIndices:存储非零的行(或列)索引。
OuterStarts:为每一列(或行)存储前两个数组中第一个非零的索引。
InnerNNZs:存储每列(相应行)的非零数。inner指的是一个内部向量,它是列主矩阵的列,或行主矩阵的行。外部这个词指的是另一个方向。

目前,给定内部向量的元素保证总是通过增加内部索引进行排序。“_”表示可以快速插入新元素的可用空间。 假设不需要重新分配,随机元素的插入因此在中,其中是相应内部向量的非零数。另一方面,在给定的内部向量中插入具有增加内部索引的元素效率更高,因为这仅需要增加相应的 InnerNNZs 条目,即 O(1) 操作。

没有可用空间的情况是一种特殊情况,称为压缩模式。它对应于广泛使用的压缩列(或行)存储方案(CCS 或 CRS)。 通过调用 SparseMatrix::makeCompressed() 函数,可以将任何 SparseMatrix 转换为这种形式。在这种情况下,可以注意到 InnerNNZs 数组与 OuterStarts 是冗余的,因为我们等式:InnerNNZs[j] = OuterStarts[j+1] - OuterStarts[j]。因此,实际上调用 SparseMatrix::makeCompressed() 会释放此缓冲区。

参考文献

Eigen关于稀疏矩阵_爱数学的虹猫的博客-CSDN博客_eigen sparsematrix

Eigen教程3 - 稀疏矩阵操作_xuezhisdc的博客-CSDN博客_eigen 稀疏矩阵

Eigen教程5 - 求解稀疏线性方程组_xuezhisdc的博客-CSDN博客_eigen 线性方程组

Eigen: Solving Sparse Linear Systems

Eigen: Quick reference guide for sparse matrices

http://www.jsqmd.com/news/1161014/

相关文章:

  • LeetCode Hot100刷题日志D8
  • eBPF 与 OpenTelemetry 融合:构建分布式追踪的 eBPF 探针
  • Spatial-Agent:大模型驱动的地理分析工作流引擎
  • 如何快速掌握Photon-GAMS光影包:面向Minecraft玩家的完整实战指南
  • QModMaster:免费开源ModBus调试工具终极指南,5分钟快速上手工业通信
  • 167、动态分配策略中 Anchor Ratio 的重新聚类:用 K-Means 调整 YOLOv11 默认 Anchor
  • Douyin-Downloader:抖音内容自动化采集的完整技术解决方案
  • 江诗丹顿中国区官方售后服务网点|官方服务电话及地址权威公示(2026年7月最新) - 江诗丹顿中国服务中心
  • 亨得利官方名表服务中心|热线电话及门店地址权威信息公告(2026年7月更新) - 亨得利官方博客
  • 探索华为eulerfs:新一代NVDIMM文件系统的终极指南
  • Claude Fable 5 扩展:免费访问扩展
  • 积家中国官方售后服务网络全指南|官网认证地址及电话全新启用(2026年7月最新) - 积家中国服务中心
  • LangChain4J:Java原生LLM应用开发核心框架解析
  • myql innodb 锁机制
  • 3步解锁:让Direct3D 8经典游戏在现代系统重获新生的智能方案
  • 亨得利官方名表服务中心|最新服务电话及地址权威信息公告(2026年7月更新) - 亨得利钟表维修中心
  • HBM技术如何解决AI计算内存瓶颈:从原理到实践
  • Tailwind IntelliSense在Cursor中卡顿?1个tsconfig.json参数+2个Cursor插件禁用项+1次LSP重启,5分钟解决97%的智能提示延迟问题
  • C++ 类和对象入门:类的定义、封装、对象大小与 this 指针
  • 江诗丹顿官方直营售后维修网点|官方服务电话及地址权威公示(2026年7月最新) - 江诗丹顿中国服务中心
  • 如何彻底告别百度网盘限速?这款开源解析工具让你免费享受高速下载
  • 2026年7月合肥大疆售后本地化服务全景|交通指引气候养护到店全攻略 - 大品牌推荐
  • 深度技术解析:NxNandManager如何实现Nintendo Switch NAND存储的专业管理
  • 由 Palantir CEO 的观点所展开的行业观察
  • protocol buffers(protobuf)安装教程
  • Caspase-2 活性分析试剂盒(比色法),灵敏捕捉凋亡早中期信号
  • ADS131M02与PIC18F96J94高精度数据采集方案详解
  • 2026华南地区医械电磁兼容检测企业哪个靠谱?合规机构大盘点+选型攻略+避坑FAQ全解析 - 行业观察网
  • Claude Cowork 上手机了,但真正值得看的不是“又多了个入口“
  • 如何快速配置HS2-HF_Patch:一键解锁Honey Select 2完整游戏体验的终极指南