Matlab 稀疏矩阵

matlab-sparse-matrix.jpg
稀疏矩阵是指矩阵中零元素远远多于非零元素的矩阵。如果把零元素和非零元素以相同方式存储会浪费内存空间。

矩阵的存储方式

  • 完全存储方式

    • 按列存储所有元素。
    • 使用 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()
最后修改:2020 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏