完全存储方式
完全存储方式是将矩阵的全部元素按列存储。
稀疏存储方式
稀疏存储方式仅存储矩阵所有的非零元素的值及其位置,即行号和列号。在MATLAB中,稀疏存储方式也是按列存储的。
在讲稀疏矩阵时,有两个不同的概念,一是指矩阵的0元素较多,该矩阵是一个具有稀疏特征的矩阵,二是指采用稀疏方式存储的矩阵。
1.sparse(S)
A=[0 0 1 0; 0 2 0 0; 3 0 0 0; 0 0 4 0]
S=sparse(A)
S=
(3,1) 3
(2,2) 2
(1,3) 1
(4,3) 4
sparse(m,n):生成一个m*n的所有元素都是0的稀疏矩阵
sparse(u,v,s,m,n) u,v,s是三个等长的向量
s是要建立的系数矩阵的非0元素
u(i),v(i)是s(i)的行和列标
m,n是矩阵的行和列数,当m,n未被指定时,该函数建立一个max(u)行、max(v)列并以s为稀疏元素的稀疏矩阵
还有一些和稀疏矩阵操作有关的函数。例如[u,v,s]=find(A):返回矩阵A中非0元素及下标。产生的u,v,s可作为sparse(u,v,s)的参数。full(A):返回和稀疏存储矩阵A对应的完全存储方式矩阵
>>B=sparse([1:2:10],[1:2:10],[2:2:10])
B =
(1,1) 2
(3,3) 4
(5,5) 6
(7,7) 8
(9,9) 10
>> [u,v,S]=find(B)
>> full(B)
特殊稀疏矩阵
单位矩阵只有对角线元素为1,其他元素都是0,是一种具有稀疏特征的矩阵。
函数eye产生一个完全存储方式的单位矩阵。
函数speye(m,n)返回一个m×n的稀疏存储方式的单位矩阵。若m=n可简写为speye(n)。
spones(S):把矩阵S的非零元素值改为1。
sprand:产生非零元素为均匀分布的随机数的稀疏矩阵 。
注:稀疏存储矩阵只是矩阵的存储方式不同,它的运算规则与普通矩阵是一样的。所以,在运算过程中,稀疏存储矩阵可以直接参与运算。当参与运算的对象不全是稀疏存储矩阵时,所得结果一般是完全存储形式。