函数集:
基本稀疏矩阵
spdiags :生成稀疏带状矩阵
speye :单位稀疏矩阵
sprand :随机稀疏矩阵
sprandn :正态分布的随机稀疏矩阵
sprandsym:生成稀疏对称随机矩阵
满阵和稀疏矩阵的转换
find :寻找非零元素下标和值
full :稀疏矩阵转化为满阵
sparse :生成稀疏矩阵
spconvert:载入稀疏矩阵
稀疏矩阵的非零元素操作
nnz :非零元素个数
nonzeros :矩阵中的非零元素
nzmax :为非零元素分配的存储空间数
spalloc :稀疏矩阵存储空间
spfun :稀疏矩阵中非零元素的函数计算
spones :非零元素全部用1替换
稀疏矩阵的可视化
spy :稀疏矩阵的图形表示
排序算法
colmmd :进行列的最小度排序
colperm :基于非零算法排序
dmperm :Dulmage-Mendelsohn分解
randperm:随机置换
symmmd :对称最小度排序
symrcm :反向Cuthill-McKee排序
范数、条件数和秩
condest :I范数矩阵条件数
normest :2范数估计
线性方程的稀疏系统
bicg :双共扼梯度法
bicgstab:双共扼梯度稳定法
cgs :二次共扼梯度法
cholinc :不完全Cholesky分解
cholupdate:Cholesky分解的秩1修正
gmres :广义最小残差法
luinc :不完全的LU分解
pcg :预处理共扼梯度法
qmr :Quasi_Minimal残差法
稀疏矩阵的特征值和奇异值
eigs :少数特征值和特征向量
svds :少数奇异值
杂项函数
spparms :设置稀疏矩阵程序的参数
示例
1、满矩阵与稀疏矩阵之间的转化
%S=sparse(A); %A=full(S); A=[0 0 5 0; 3 0 3 0 ; 0 0 0 1; 0 4 3 0] S=sparse(A) whos
%S=sparse(i,j,s,m,n); %其中 i 和 j 分别是矩阵非零元素的行和列的指标向量,s 是非零元素值向量,m、n %分别是矩阵的行数和列数 S2=sparse([1 2 2 3 4 4],[3 1 3 4 2 3],[5 3 3 1 4 3],4,4)
设文本文件 T.txt 中有三列内容,第一列是一些行下标,第二列是列下标,第三列是非零元素值
1 3 5
2 1 3
2 3 3
3 4 1
4 2 4
4 3 3
load T.txt S=spconvert(T)
%S=spdiags(B,d,m,n) B=rand(4,2); S3=spdiags(B,[0 1],4,4)
S=speye(m,n) S=speye(size(A)) R=sprand(S) % R has the same sparsity structure as S S=sprand(m,n,density) % random, m-by-n, sparse matrix with approximately density*m*n uniformly distributed nonzero entries S=bucky % 一个内置的稀疏矩阵(邻接矩阵)
whos nnz(S) % 返回非零元素的个数 nonzeros(S) % 返回列向量,包含所有的非零元素 nzmax(S) % 返回分配给稀疏矩阵中非零项的总的存储空间 spy(S)
[i,j,s]= find(S) [i,j]= find(S) %返回 S 中所有非零元素的下标和数值,S 可以是稀疏矩阵或满矩阵
A=eye(4); B=speye(4); S1=A+B; S2=A*B; S3=A\B; S4=A.*B; whos