稀疏(sparsity)矩阵的行压缩存储


压缩矩阵行或列来存储矩阵的格式是很普遍的,它们不会存储不必要的元素(即空值)。但是它们也不是非常有效的,当在一个矩阵-向量积或预解决的每个简单标量中需要间接寻址。行压缩存储方式会把一个稀疏矩阵行的非零数值放在连续的存储空间。

假设我们有一个非对称的稀疏矩阵A


我们先定义3个向量:

一个浮点类型:val      

两个整型:col_ind , row_ptr

val向量用于存储矩阵A的非零元素值,从第一行开始遍历。col_ind 向量用于存储 val 向量中值对应的列索引(这里下标从0开始)。如下图:


也就是说,如果 val (k) = Ai,j 那么 col_ind = j

向量 row_ptr 用于存储每行中第一非零元素的在 col_ind 中的位置,如:第一行中的一个非零元素为10在 col_ind 向量中的位置为1,第二行中的第一个非零元素3在  col_ind 向量中的位置为3,这样以此类推,可得到如下向量:

如果 val (k) =Ai,j 那么有 row_ptr(i)<= k < row_ptr(i+1)


如果我们的稀疏矩阵是对称的,那么我们只需要存储上三角(或下三角)即可。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值