森之张卫东 发表于 2015-9-26 22:55

sparse数据类型

sparse数据类型在MATLAB中有一个专门的数据类型,用来对稀疏进行运算。sparse数据类型不同于doulbe数据,它在内存中只存储非零元素。实际上,sparse数据类型只存储每一个非零元素的三个值:元素值,元素的行号和列号。尽管非零元素这三个值必须存储在这内存,但相对于存储稀疏矩阵的所有元素来说要简单高效得多。我们用10×10的方阵来说明稀疏矩阵的应用。>> a = eye(10)a =     1     0    0     0     0    0     0     0    0     0     0     1    0     0     0    0     0     0    0     0     0     0    1     0     0    0     0     0    0     0     0     0    0     1     0     0    0     0     0    0     0     0    0     0     1    0     0     0    0     0     0     0    0     0     0    1     0     0    0     0     0     0    0     0     0    0     1     0    0     0     0     0    0     0     0    0     0     1    0     0     0     0    0     0     0    0     0     0    1     0     0     0    0     0     0    0     0     0    0     1如果这个矩阵被转化为稀疏矩阵,它的结果是>> as = sparse(a)as =   (1,1)        1   (2,2)        1   (3,3)        1   (4,4)        1   (5,5)        1   (6,6)        1   (7,7)        1   (8,8)        1   (9,9)        1  (10,10)       1注意在稀疏矩阵存储的是行列地址和这一点所对应的非零数据值。只要一个矩阵的大部分数都是0,这种方法用来存储数据就是高效的,但是如果非零元素很多的话,那么用占用更多的空间,因为稀疏矩阵需要存储蓄地址。函数issparse通常用作检测一个矩阵是否为稀疏矩阵。如果这个矩阵是稀疏的,那么这个函数将会返回1。稀疏矩阵的优点可以通过下面的描述体现出来,考虑一个1000×1000的矩阵平均每一行只有4个非零元素。如果这个矩阵以全矩阵的形式储存,那么它要战胜8000000个字节。从另一方面说,如果它转化为一个稀疏矩阵,那么内存的使用将会迅速下降。

页: [1]
查看完整版本: sparse数据类型