matlab学习(1)——sparse函数和full函数处理稀疏矩阵

本文介绍MATLAB中稀疏矩阵的概念及存储方式,包括稀疏矩阵的定义、存储方法及sparse和full函数的使用,用于实现稀疏矩阵与非稀疏矩阵之间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sparse函数和full函数

稀疏矩阵与非稀疏矩阵的转换

矩阵中非零元素的个数远远小于矩阵元素的总数),并且非零元素的分布没有规律,则称该矩阵为稀疏矩阵(sparse matrix)。

二维数组Amn中有N个非零元素,若N<<m*n(N/m*n<=0.2),则称A为稀疏矩阵。
 
函数功能:生成稀疏矩阵
使用方法 : S = sparse(A)
一般意义上的稀疏矩阵,就是看起来很松散的,也就是说,在这个矩阵中,绝大多数元素是零元素。例如:
0, 0, 0, 0;
0, 0, 1, 0;
0, 0, 0, 0;
0, 1, 0, 2;
计算机 存储稀疏矩阵可以有两种思路:
1.按照 存储一个普通矩阵一样存储一个稀疏矩阵,比如上面这个稀疏矩阵中总共十六个元素(三个非零元素),把这些元素全部放入 存储空间中。这种存储方式,在matlab就叫做 full storage organization。
2.只存储非零元素,那么怎么存储呢?
(4,2)        1
(2,3)        1
(4,4)        2
看出来了吧, 只存储非零元素在稀疏矩阵中的位置和值。比如,上面所举的这个例子,值为2的项在第4行第4列,那么我们就只需要存储这一非零项在稀疏矩阵中的“坐标”(4,4)和这一非零项的值2。在MATLAB中,这种存储方式就叫做sparse storage organization。虽然,这样要多存储一组坐标,但如果稀疏矩阵中非零元素非常少,以这种存储方式存储稀疏矩阵反而节省了内存空间。
 
sparse函数的功能就是把以第一种存储形式存储的稀疏矩阵转换成第二种形式存储。对应的函数为 full,即把以第二种方式存储的稀疏矩阵转换成第一种方式存储。
在MATLAB中,存储一个稀疏矩阵有两种方法。
 
S = sparse(A)
将矩阵A转化为稀少矩阵情势,即矩阵A中任何0元素被去除,非零元素及其下标构成矩阵S。
若是A本身是稀少的,sparse(S)返回S。
程序示例
>> A = [0, 0, 0, 0;
0, 0, 1, 0;
0, 0, 0, 0;
0, 1, 0, 2];
>> sparse(A)
ans =
(4,2)        1
(2,3)        1
(4,4)        2
 
S = sparse(i,j,s,m,n,nzmax)
由向量i,j,s生成一个m*n的含有nzmax个非零元素的稀少矩阵S,并且有
S(i(k),j(k)) = s(k)。
向量 i,j 和 s 有雷同的长度。对应对向量i和j的值,s 中任何零元素将被忽视。
book.iLoveMatlab.cn
s 中在 i 和 j 处的反复值将被叠加。

重视:若是i或j随便率性一个大于最大整数值局限,2^31-1, 稀少矩阵不克不及被创建。

转载于:https://www.cnblogs.com/happycaoyue/archive/2013/04/14/3020702.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值