当前位置:网站首页>Eigen稀疏矩阵操作
Eigen稀疏矩阵操作
2022-07-06 05:58:00 【瞻邈】
在许多应用中(例如,有限元方法),通常处理非常大的矩阵,其中只有少数系数不为零。 在这种情况下,可以通过使用仅存储非零系数的专用表示来减少内存消耗并提高性能。 这样的矩阵称为稀疏矩阵。
1. 稀疏矩阵模块
模块 | 内容 | |
#include <Eigen/SparseCore> | SparseMatrix 和 SparseVector 类、矩阵组装、 基本稀疏线性代数(包括稀疏三角求解器) | |
#include <Eigen/SparseCholesky> | 直接用稀疏 LLT 和 LDLT Cholesky 分解来解决稀疏自伴随正定问题 | |
#include<Eigen/SparseLU> | 稀疏 LU 分解来解决一般平方稀疏系统 | |
#include<Eigen/SparseQR | 用于解决稀疏线性最小二乘问题的稀疏 QR 分解 | |
#include <Eigen/IterativeLinearSolvers> | 求解大型一般线性平方问题的迭代求解器(包括自伴随正定问题) | |
#include <Eigen/Sparse> | 包含以上所有模块 |
2. 稀疏矩阵格式
SparseMatrix 类是 Eigen 稀疏模块的主要稀疏矩阵表示; 它提供高性能和低内存使用率。 它实现了广泛使用的压缩列(或行)存储方案的更通用的变体。 它由四个紧凑的数组组成:
Values:存储非零系数值。
InnerIndices:存储非零的行(或列)索引。
OuterStarts:为每一列(或行)存储前两个数组中第一个非零的索引。
InnerNNZs:存储每列(相应行)的非零数。 inner指的是一个内部向量,它是列主矩阵的列,或行主矩阵的行。 外部这个词指的是另一个方向。
目前,给定内部向量的元素保证总是通过增加内部索引进行排序。 “_”表示可以快速插入新元素的可用空间。 假设不需要重新分配,随机元素的插入因此在 O(nnz_j) 中,其中 nnz_j 是相应内部向量的非零数。 另一方面,在给定的内部向量中插入具有增加内部索引的元素效率更高,因为这仅需要增加相应的 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 线性方程组
边栏推荐
- Market development prospect and investment risk assessment report of China's humidity sensor industry from 2022 to 2028
- J'ai un chaton.
- Analysis report on development trends and investment planning of China's methanol industry from 2022 to 2028
- [experience] install Visio on win11
- Accélération de la lecture vidéo de l'entreprise
- H3C S5820V2_5830V2交换机IRF2堆叠后升级方法
- 【课程笔记】编译原理
- AUTOSAR from getting started to becoming proficient (10) - embedded S19 file analysis
- Demander le Code de texte standard correspondant à un centre de travail dans l'ordre de production
- As3013 fire endurance test of cable distribution system
猜你喜欢

Mysql database master-slave cluster construction

Raised a kitten

Station B Liu Erden - linear regression and gradient descent

什么是独立IP,独立IP主机怎么样?

Node 之 nvm 下载、安装、使用,以及node 、nrm 的相关使用

初识数据库

Novice entry SCM must understand those things
[SQL Server fast track] - authentication and establishment and management of user accounts

How Huawei routers configure static routes
![[happy Spring Festival] if you feel happy, dance](/img/b5/faa4cb94ef5fb45b8bb98ecb69962f.jpg)
[happy Spring Festival] if you feel happy, dance
随机推荐
Database: ODBC remote access SQL Server2008 in oracel
nodejs实现微博第三方登录
ArcGIS application foundation 4 thematic map making
MPLS test report
H3C防火墙RBM+VRRP 组网配置
wib3.0 跨越,在跨越(ง •̀_•́)ง
As3013 fire endurance test of cable distribution system
C language learning notes (mind map)
进程和线程
Is it difficult for an information system project manager?
Leetcode 701 insertion operation in binary search tree -- recursive method and iterative method
Pytorch代码注意的细节,容易敲错的地方
Bit operation rules
Mysql database master-slave cluster construction
Web service connector: Servlet
类和对象(一)this指针详解
C language bubble sort
【SQL server速成之路】——身份驗證及建立和管理用戶賬戶
Embedded interview questions (IV. common algorithms)
Raised a kitten