首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab uint8稀疏

Matlab uint8稀疏
EN

Stack Overflow用户
提问于 2015-06-17 14:16:03
回答 1查看 1.3K关注 0票数 2

在Matlab中创建稀疏矩阵时,似乎可以创建一个由逻辑或双值数填充的稀疏矩阵。

在阅读时,我了解到Matlab不支持其他类型的稀疏矩阵,即uint8或其他整数。在我的应用程序中,我知道max(values)==16,而内存是一件非常重要的事情,因此我希望有uint8稀疏矩阵。

  • 有没有一种创建unit8稀疏矩阵的方法?
  • 如果没有(很可能),是否有任何明显的原因,为什么Matlab没有实现uint8稀疏矩阵?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-07 06:35:40

我可以看到,使用uint8而不是double将是没有或很少的改进。

密集矩阵是一个连续的数组,因此不需要额外的索引或结构,每个元素的位置取决于其在内存中的物理位置。

但是稀疏矩阵还需要存储每个元素索引,如果是2D矩阵,则需要两个整数( 32位或64位)来记住每个元素行和列号。最重要的是,可能存在一些与实现相关的开销,例如树结构或其他一些用来使稀疏矩阵操作高效的方法。

所以它不是8 uint8对64 double,内存使用量少8倍,而是(8+32+32+log(N)+.)vs (64+32+32+log(N)+.),我猜最好的结果是节省10-20%?

此外,如果我没有记错,每个内存地址现在存储64位,这是一个double或8 uint8打包在一起。这意味着每个条目需要使用几个额外的位,以便记住我们需要在那个内存地址上打包的uint8,并添加一些额外的比特掩蔽操作来执行。

所以Mathworks的人可能做了类似的估计,并且决定只做double稀疏矩阵。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30894231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档