矩阵稀疏存储的目标
对稀疏矩阵进行压缩存储目的是节省存储空间。
存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。
但对于稀疏矩阵而言,若用二维数组来表示,会重复存储了很多个0了,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。
(1)矩阵稀疏存储的目标扩展阅读
优点
稀疏矩阵的计算速度更快,因为MATLAB只对非零元素进行操作,这是稀疏矩阵的一个突出的优点。假设矩阵A,B中的矩阵一样,计算2*A需要一百万次的浮点运算,而计算2*B只需要2000次浮点运算。
因为MATLAB不能自动创建稀疏矩阵,所以要用特殊的命令来得到稀疏矩阵。算术和逻辑运算都适用于稀疏矩阵。对于一个用二维数组存储的稀疏矩阵Amn,如果假设存储每个数组元素需要L个字节,那么存储整个矩阵需要m*n*L个字节。
2. 对稀疏矩阵压缩存储的目的是什么 A 便于进行矩阵预算 B 便于输入和输出C节省存储空间 D降低运算世间复杂度
对稀疏矩阵压缩存储的目的是:C节省存储空间和D降低预算时间复杂度,如果是单选题,那么应该选C节省存储空间。
矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律,则称该矩阵为稀疏矩阵(sparse matrix);与之相区别的是,如果非零元素的分布存在规律(如上三角矩阵、下三角矩阵、对角矩阵),则称该矩阵为特殊矩阵。
稀疏矩阵的计算速度更快,因为M AT L A B只对非零元素进行操作,这是稀疏矩阵的一个突出的优点.假设矩阵A,B中的矩阵一样.计算2*A需要一百万次的浮点运算,而计算2*B只需要2 0 0 0次浮点运算.因为M AT L A B不能自动创建稀疏矩阵,所以要用特殊的命令来得到稀疏矩阵.
对于一个用二维数组存储的稀疏矩阵Amn,如果假设存储每个数组元素需要L个字节,那么存储整个矩阵需要m*n*L个字节.但是,这些存储空间的大部分存放的是0元素,从而造成大量的空间浪费.为了节省存储空间,可以只存储其中的非0元素.
3. 稀疏矩阵定义以及存储格式(COO,CSR,CSC)
网络:在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。 简单来说,稀疏矩阵就是绝大部分都是0的矩阵 ,只包含很少的非零值.
比如,
上述稀疏矩阵非零元素有9个,26个零值.稀疏性是74%.
稀疏矩阵因为绝大部分都是0元素,如果我们仍然按照普通方式存储,无疑会 浪费很多空间 ;同时如果进行运算时,0元素对最终结果也没有帮助, 增加了许多无效计算 . 因此,我们需要设计出新的存储方式,或者说数据结构来存储稀疏矩阵.比较常见的有:
对于稀疏矩阵的存储,为了达到压缩的目的(节省存储空间),只存储非0元素值,但是也要保留非零元素的位置,方便恢复.所以,我们存储时不仅存储非零元素值,同时存储其坐标位置(row,column). 针对这两者的存储,会出现不同的设计方案.这里主要介绍COO,CSR和CSC存储格式.
我们使用三个数组row,column和data分别用来存储非零元素坐标的row_index,col_index,以及数值.比如:
NNO:The number of nonzero.矩阵非零元素个数. 三个数组的长度都是NNO.data[i]在原稀疏矩阵中的坐标为(row[i],col[i]]).
可以发现,这种存储方式中,row数组和column数组中有一定的重复元素.我们是否可以针对这个冗余特性进一步进行压缩?之后出现CSR,CSC,分别是对row数组和column数组进行了压缩.
对COO稀疏矩阵存储格式的三个数组中的row数组进行压缩.其他两个数组保持不变;三个数组分别是row_ptr,columns和data.其中columns和data数组长度均为NNO(矩阵的非零元素个数). 如何对COO的row进行压缩?
row_ptr存储的是每行的第一个非零元素距离稀疏矩阵第一个元素的偏移位置;
由row_ptr我们可以知道每行非零元素在data中的index范围.第i行的非零元素为data[row_ptr[i]:row_ptr[i+1]],对data数组的切片,不包含data[row_ptr[i+1]];同时第i行非零元素的col坐标分别为columns[row_ptr[i]:row_ptr[i+1]];对data和columns的访问相似,index是相同的.
如上图中,第0行非零元素在data中是data[0:2],就是1,7;列坐标为columns[0:2],就是0,1,第1行非零元素为data[2:4],有两个元素2和8,列坐标分别为columns[2:4],1和2.
方便进行行操作.
和CSR类似.只不过对列进行压缩,row和data保持不变.
方便进行列操作.
4. 稀疏矩阵稀疏矩阵的计算机存储
在计算机存储中,稀疏矩阵的特性使其在处理大量元素为零的情况时显得尤为高效。当Matlab将矩阵视为稀疏矩阵时,存储策略发生了改变。通常,矩阵的存储仅需关注非零元素,而非全矩阵。具体来说,这种存储方式采用一个m×3的矩阵,其中第1列存储行下标,第2列存储列下标,第3列则是非零元素的值。每个非零元素占用8个字节(相当于高斯节),而下标则需要4个字节。因此,对于一个包含m个非零元素的矩阵,总的内存占用为16字节乘以m。
以矩阵A为例,其元素为(1,0,0,0),形成一个1×1的单位矩阵,常规存储需要8兆字节(Mb)。然而,如果使用`sparse`命令,我们可以将其表示为一个1×3的矩阵,每行仅包含一个元素的行下标、列下标和值。这样,存储这个单位矩阵只需16千字节(Kb),相比于常规存储,节省的空间达到了99.8%。这种方法同样适用于许多具有大量零元素的广义矩阵,极大地节省了存储空间。
(4)矩阵稀疏存储的目标扩展阅读
如果在矩阵中,多数的元素为0,称此矩阵为稀疏矩阵(sparse matrix)。
5. 对稀疏矩阵进行压缩存储目的是() A.便于进行矩阵运算 B.便于输入和输出 C.节省存储空间 D.降低运
对稀疏矩阵进行压缩存储目的是节省存储空间。
稀疏矩阵的存储方式:
存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。但对于稀疏矩阵而言,若用二维数组来表示,会重复存储了很多个0了,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。
(5)矩阵稀疏存储的目标扩展阅读:
最常用的稀疏矩阵存储格式主要有:三元组(i,j,a(i,j))和CSR(Compressed Sparse Row)。
(1) 三元组(i,j,a(i,j))(也叫COO(Coordinate Format))
三元组(i,j,a(i,j))很简单,就是使用3个数组,分别存储全部非零元的行下标(row index)、列下标(column index)和值(value)
(2) CSR存储(Compressed Sparse Row,压缩稀疏的行)
CSR是比较标准的一种,也需要三类数据来表达:数值,列号,以及行偏移。数值和列号与COO一致,表示一个元素以及其列号,行偏移表示某一行的第一个元素在values里面的起始偏移位置。
6. 稀疏矩阵采用压缩存储的目的主要是什么
节省存储空间。
根据网络查询,对稀疏矩阵进行压缩存储目的是节芹高省存储空间。存储矩阵的一般方法是采用二维数组。
矩族哪阵压缩由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法嫌穗尺来进行压缩存储。