当前位置:网站首页>Eigen sparse matrix operation
Eigen sparse matrix operation
2022-07-06 06:03:00 【Zhan Miao】
In many applications ( for example , The finite element method ), Usually deal with very large matrices , Among them, only a few coefficients are not zero . under these circumstances , You can reduce memory consumption and improve performance by using a dedicated representation that stores only non-zero coefficients . Such a matrix is called sparse matrix .
1. Sparse matrix module
modular | Content | |
#include <Eigen/SparseCore> | SparseMatrix and SparseVector class 、 matrix assemble 、 Basic sparse linear algebra ( Including sparse triangle solver ) | |
#include <Eigen/SparseCholesky> | Directly use sparse LLT and LDLT Cholesky Decomposition to solve the sparse self adjoint positive definite problem | |
#include<Eigen/SparseLU> | sparse LU Decomposition to solve the general square sparse system | |
#include<Eigen/SparseQR | Sparse for solving sparse linear least squares problem QR decompose | |
#include <Eigen/IterativeLinearSolvers> | Iterative solver for solving large general linear square problems ( Including the self adjoint positive definite problem ) | |
#include <Eigen/Sparse> | Including all the above modules |
2. Sparse matrix format
SparseMatrix Class is Eigen The main sparse matrix representation of the sparse module ; It provides high performance and low memory usage . It implements widely used compressed columns ( Or yes ) A more general variant of the storage scheme . It consists of four compact arrays :
Values: Store non-zero coefficient values .
InnerIndices: Store non-zero rows ( Or column ) Indexes .
OuterStarts: For each column ( Or yes ) Store the first non-zero index in the first two arrays .
InnerNNZs: Store each column ( Corresponding line ) Nonzero number of . inner It refers to an internal vector , It is the column of the column master matrix , Or row of the row master matrix . The word external refers to the other direction .
at present , The elements of a given internal vector are always sorted by adding an internal index . “_” Represents the available space to quickly insert new elements . Assume no reallocation , The insertion of random elements is therefore in O(nnz_j) in , among nnz_j Is the nonzero number of the corresponding internal vector . On the other hand , It is more efficient to insert elements with increased internal indexes into a given internal vector , Because this only needs to increase the corresponding InnerNNZs entry , namely O(1) operation .
The case of no available space is a special case , Called compression mode . It corresponds to the widely used compressed column ( Or yes ) Storage plan (CCS or CRS). By calling SparseMatrix::makeCompressed() function , Any SparseMatrix Convert to this form . under these circumstances , It can be noted that InnerNNZs An array with the OuterStarts It's redundant , Because our equation :InnerNNZs[j] = OuterStarts[j+1]-OuterStarts[j]. therefore , Actually call SparseMatrix::makeCompressed() This buffer will be released .
reference
Eigen course 3 - Sparse matrix operation _xuezhisdc The blog of -CSDN Blog _eigen sparse matrix
边栏推荐
- Amazon Engineer: eight important experiences I learned in my career
- Cognitive introspection
- [Jiudu OJ 08] simple search x
- Download, install and use NVM of node, and related use of node and NRM
- Introduction to promql of # yyds dry goods inventory # Prometheus
- 查詢生產訂單中某個(些)工作中心對應的標准文本碼
- 单元测试的意义
- IDEA 新UI使用
- How to recover Huawei router's forgotten password
- Huawei BFD configuration specification
猜你喜欢
授予渔,从0开始搭建一个自己想要的网页
局域网同一个网段通信过程
[Thesis code] SML part code reading
Station B, Master Liu Er - dataset and data loading
MIT6.s081-2020 Lab2 System Calls
(5) Explanation of yolo-v3 core source code (3)
c语言——冒泡排序
Arrays and collections
Yunxiaoduo software internal test distribution test platform description document
Is it difficult for an information system project manager?
随机推荐
Linux regularly backs up MySQL database
异常检测方法总结
LTE CSFB process
Web服务连接器:Servlet
Embedded point test of app
Memory and stack related concepts
Dynamic programming -- knapsack problem
通讯录管理系统链表实现
MIT6.s081-2020 Lab2 System Calls
Practice sharing: how to safely and quickly migrate from CentOS to openeuler
Summary of data sets in intrusion detection field
SQLMAP使用教程(三)实战技巧二
Node 之 nvm 下载、安装、使用,以及node 、nrm 的相关使用
Luogu p1460 [usaco2.1] healthy Holstein cows
The usage and difference between strlen and sizeof
How to recover Huawei router's forgotten password
AUTOSAR from getting started to becoming proficient (10) - embedded S19 file analysis
Sqlmap tutorial (III) practical skills II
Clock in during winter vacation
Database: ODBC remote access SQL Server2008 in oracel