matlab稀疏矩阵

函数集:

基本稀疏矩阵  
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

2、直接创建稀疏矩阵

%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)


3、利用文件创建稀疏矩阵

设文本文件 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)

4、带状稀疏矩阵的创建

%S=spdiags(B,d,m,n)

B=rand(4,2);
S3=spdiags(B,[0 1],4,4)

5、其它稀疏矩阵创建函数

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  % 一个内置的稀疏矩阵(邻接矩阵)

6、查看稀疏矩阵

whos

nnz(S) % 返回非零元素的个数
nonzeros(S) % 返回列向量,包含所有的非零元素
nzmax(S)     % 返回分配给稀疏矩阵中非零项的总的存储空间

spy(S)

7、find 函数与稀疏矩阵

[i,j,s]= find(S)
[i,j]= find(S)
%返回 S 中所有非零元素的下标和数值,S 可以是稀疏矩阵或满矩阵

8、稀疏矩阵的运算

A=eye(4); B=speye(4);
S1=A+B; S2=A*B; S3=A\B; S4=A.*B;
whos



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值