matlab中的sparse和full函数(稀疏矩阵和非稀疏矩阵之间的转换)

时间:2022-08-24 21:21:03

sparse函数提供多种参数形式

1 S = sparse(X)

2 S = sparse(i,j,s,m,n,nzmax)

3 S = sparse(i,j,s,m,n) where nzmax = length(s).

4 S = sparse(i,j,s) where m = max(i) and n = max(j).

5 S = sparse(m,n) abbreviates sparse([ ],[ ],[ ],m,n,0).

形式1:S = sparse(X)

返回矩阵x的稀疏矩阵形式,所谓稀疏矩阵就是将所有0元素剔除,只保留非0元素。

比如 x =

     1     0     3
     0     1     0

那么sparse(x)=

   (1,1)        1
   (2,2)        1
   (1,3)        3

可以看到返回的稀疏矩阵给出了所有非0元素的索引,剔除了所有0元素。如果x本身就是稀疏矩阵,那么返回其本身。

形式2:S = sparse(i,j,s,m,n,nzmax)

参数 i,j,s 是3个向量,而且长度必须相等;i是行索引,j是列索引,s是i j索引位置对应的元素值。m和n指定生成的矩阵的维数,nzmax指定为非0元素分配的空间,如果nzmax<length(i),执行该语句会出错。

比如

i =

     1     2     3

j =

     1     2     2
s =

     2     2     0

m=n=3;nzmax=3;

那么 answ=sparse(i,j,s,m,n,nzmax)

answ =

   (1,1)        2
   (2,2)        2

利用full函数将answ转换成非稀疏矩阵,得到

full(answ)

ans =

     2     0     0
     0     2     0
     0     0     0

形式3:S = sparse(i,j,s,m,n) where nzmax = length(s).

与形式2一样,就是略去了nzmax参数,默认为length(s)。

形式4:S = sparse(i,j,s) where m = max(i) and n = max(j).

与形式2一样,就是默认了m,n,nzmax的值

形式5:S = sparse(m,n) abbreviates sparse([ ],[ ],[ ],m,n,0).

创建全0的稀疏矩阵。