稀疏矩阵
指零元素的个数远远多于非零元素的个数的矩阵
矩阵的存储方式
完全存储方式:将矩阵的所有元素按列存储
稀疏存储方式:只存储矩阵的非零元素的值及其位置即行号和列号
两种存储方式的转化:
A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A
S=full(A):将矩阵A转化为完全存储方式的矩阵S
直接建立稀疏存储矩阵
sparse函数的其他调用格式
sparse(m,n):生成一个mxn的所有元素均为零的稀疏矩阵
sparse(u,v,S):u,v,S是三个等长的向量,S是建立的稀疏存储矩阵的非零元素,u(i),v(i)分别是S(i)的行和列下标 如
A=sparse([1,2,2],[2,1,4],[4,5,-7])
A=(2,1) 5
(1,2) 4
(2,4) -7B=full(A)
B=0 4 0 0
5 0 0 -7
使用spconvert函数直接建立稀疏存储矩阵,调用格式为
B=spconvert(A)
A为一个mx3或mx4的矩阵,其每行表示一个非零元素,m是非零元素的个数
A=[2,2,1;2,1,-1;2,4,3]
A=2 2 1
2 1 -1
2 4 3B=spconvert(A)
B=(2,1) -1
(2,2) 1
(2,4) 3
带状稀疏矩阵的稀疏存储
带状稀疏矩阵:所有非零元素集中在对角线上的矩阵
稀疏矩阵有两种基本类型:无规则结构的稀疏矩阵和有规则结构的稀疏矩阵
带状稀疏矩阵属于有规则结构的稀疏矩阵
[B,d]=spdiags(A):从带状稀疏矩阵A中提取所有的非零对角线元素赋给矩阵B,及这些非零对角线的位置组成向量d
A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m,n为原带状稀疏矩阵的行数和列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置
单位矩阵的稀疏存储
speye(m,n)返回一个mxn的稀疏存储单位矩阵
speye(3)
ans=(1,1) 1
(2,2) 1
(3,3) 1
稀疏矩阵应用举例
求三对角线性方程组的解