当前位置:网站首页>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
边栏推荐
- Station B Liu Erden - linear regression and gradient descent
- 2022 software testing workflow to know
- Request forwarding and redirection
- H3C V7版本交换机配置IRF
- 【LeetCode】Day96-第一个唯一字符&赎金信&字母异位词
- Function of contenttype
- 通讯录管理系统链表实现
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- Construction of yolox based on paste framework
- The difference and usage between continue and break
猜你喜欢
(5) Explanation of yolo-v3 core source code (3)
请求转发与重定向
【无标题】
Mysql database master-slave cluster construction
Analysis report on development trends and investment planning of China's methanol industry from 2022 to 2028
[happy Spring Festival] if you feel happy, dance
Station B Liu Erden linear regression pytoch
CoDeSys note 2: set coil and reset coil
[web security] nodejs prototype chain pollution analysis
Li Chuang EDA learning notes 12: common PCB board layout constraint principles
随机推荐
【论文代码】SML部分代码阅读
How to recover Huawei router's forgotten password
Amazon Engineer: eight important experiences I learned in my career
[untitled]
公司視頻加速播放
SQLMAP使用教程(三)实战技巧二
How to use the container reflection method encapsulated by thinkphp5.1 in business code
[web security] nodejs prototype chain pollution analysis
ContentType的作用
[C language syntax] the difference between typedef struct and struct
Huawei BFD configuration specification
Gtest之TEST宏的用法
Mysql database master-slave cluster construction
【无标题】
在线问题与离线问题
IDEA 新UI使用
GTSAM中ISAM2和IncrementalFixedLagSmoother说明
What are the test sites for tunnel engineering?
Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028
关于 PHP 启动 MongoDb 找不到指定模块问题