当前位置:网站首页>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
边栏推荐
- (5) Explanation of yolo-v3 core source code (3)
- Query the standard text code corresponding to a work center (s) in the production order
- Go language -- language constants
- First knowledge database
- 如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
- About PHP startup, mongodb cannot find the specified module
- nodejs实现微博第三方登录
- 【论文代码】SML部分代码阅读
- ContentType的作用
- Configuring OSPF GR features for Huawei devices
猜你喜欢
【论文代码】SML部分代码阅读
Caused by:org.gradle.api.internal.plugins . PluginApplicationException: Failed to apply plugin
isam2运行流程
Grant Yu, build a web page you want from 0
properties文件
How to use the container reflection method encapsulated by thinkphp5.1 in business code
Download, install and use NVM of node, and related use of node and NRM
Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure
C language learning notes (mind map)
[paper reading] nflowjs: synthetic negative data intensive anomaly detection based on robust learning
随机推荐
Redistemplate common collection instructions opsforvalue (II)
Request forwarding and redirection
Report on the competition status and investment decision recommendations of Guangxi hospital industry in China from 2022 to 2028
Yygh-11-timing statistics
Clock in during winter vacation
局域网同一个网段通信过程
The difference and usage between continue and break
Cannot build artifact 'test Web: War expanded' because it is included into a circular depend solution
AUTOSAR from getting started to becoming proficient (10) - embedded S19 file analysis
Zoom through the mouse wheel
Memory and stack related concepts
LTE CSFB process
P2802 go home
通讯录管理系统链表实现
IPv6 comprehensive experiment
How Huawei routers configure static routes
Hongliao Technology: Liu qiangdong's "heavy hand"
Leetcode 701 insertion operation in binary search tree -- recursive method and iterative method
Analysis report on development trends and investment planning of China's methanol industry from 2022 to 2028
Construction of yolox based on paste framework