是的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