稀疏矩阵:指一个很大的矩阵,且大多数的元素为 0。
目的:当矩阵中存在大量元素为0时,通过创建稀疏矩阵可以减少全矩阵的存储空间和运算量。
1 创建
方法1:
通过sparse创建
a = eye(5) %建立对角矩阵
as = sparse(a)%转化为稀疏矩阵
whos
结果:
>>
a =
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
as =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
(5,5) 1
Name Size Bytes Class Attributes
a 5x5 200 double
as 5x5 128 double sparse
方法2:
用MATLAB函数 speye,sprand 和 sprandn 直接产生稀疏矩阵,它们对应的全矩阵为 eye,rand,和 randn。
aspeye=speye(5)
结果:
aspeye =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
(5,5) 1
2 稀疏矩阵转换为全矩阵
aspeye=speye(5)
b=full(aspeye)
结果:
aspeye =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
(5,5) 1
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
3 稀疏矩阵的运算
MATLAB 允许全矩阵与稀疏的混合运算。它们产生的结果可以是全矩阵也可以是稀疏矩阵,这取决于那种结果更高效
issparse通常用作检测一个矩阵是否为稀疏矩阵。如果这个矩阵是稀疏的,那么这个函数将会返回 1。
普通的 MATLAB 稀疏矩阵函数: