sparse double matlab,matlab sparse 不支持单精度矩阵 的问题

本文介绍了如何在MATLAB中处理sparse矩阵,特别是针对单精度矩阵的问题。通过转换数据类型和使用find函数,可以有效地节省存储空间。详细探讨了使用uint8、uint16和uint32作为下标存储的优势和限制,以及如何恢复原始矩阵。
摘要由CSDN通过智能技术生成

是的sparse本身不支持单精度

你可以转化为double再用sparse

如果还要用single类型进一步节省空间

还是有办法的

实际上sparse稀疏矩阵,能够节省存储空间的原因是

避免存储矩阵中大量的0元素

而sparse实际上是寻找矩阵的非零元素,记录它们的下标值和数值

如果是single的矩阵,使用不了sparse,我们可以用find得到类似的结果

假如原来的矩阵是a,a中有很多0元素,我们想压缩存储,首先利用

[r c v]=find(a)

就可以得到每个非零元素的行下标r,列下标c ,数值v

例如:

a=[ 0 1 0 ; 0 0 2];

如果我们用sparse存成稀疏矩阵,那么

>> sparse(a)

ans =

(1,2) 1

(2,3) 2

如果我们用find函数求得非零元素的下标和值

>> [r c v]=find(a);

>> [r c v]

ans =

1 2 1

2 3 2

可见sparse矩阵的显示结果中第n行的数据 实际上就是 (r(n),c(n)) v(n)

但是要存储行列两个坐标,还是数据太多,我们只需要

[r c v]=find(a(:))

这时候数据就会以先行后列的顺序排成一个一维的数组

我们只要一个坐标r就可以记录其元素所在的位置

以上面的例子为例

>> [r c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值