Matlab 稀疏矩阵
稀疏矩阵是指矩阵中零元素远远多于非零元素的矩阵。如果把零元素和非零元素以相同方式存储会浪费内存空间。
矩阵的存储方式
完全存储方式
- 按列存储所有元素。
- 使用
full
函数将矩阵转化为完全存储。·
稀疏存储方式
- 只存储非零元素的值和位置(行和列),同样按列存储。
sparse(A)
将矩阵 A 转化为稀疏存储。sparse(m,n)
直接建立 mxn 的稀疏存储矩阵。sparse(row,cell,value)
直接建立稀疏矩阵,其中三个参数为等长向量,分别表示矩阵元素的行,列和值。spconvert(A)
直接建立稀疏矩阵A(i,1)
表示第i个非零元素所在的行A(i,2)
表示第i个非零元素所在的列A(i,3)
表示第i个非零元素的实部A(i,4)
表示第i个非零元素的虚部- 若矩阵全是实数,则矩阵只需要有三列
>> A = sparse(eye(5))
A =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
(5,5) 1
>> B = full(A)
B =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
>> whos
Name Size Bytes Class Attributes
A 5x5 128 double sparse
B 5x5 200 double
有特定结构的稀疏矩阵
带状稀疏矩阵
[B,d]=spdiags(A)
从稀疏矩阵 A 中提取全部非零对角线元素赋给矩阵 B,非零对角线位置(第k
条对角线)赋给向量 d。A=spdiags(B,d,m,n)
是上一条命令的逆命令,但由于转换过程丢失了一些信息,这里需要两个额外的参数m、n代表原矩阵的行数和列数。
- 稀疏存储单位矩阵
speye()