gle*_*lep 1 matlab sparse-matrix
假设我创建了这个稀疏矩阵,其中非零元素由布尔"true"组成:
s =稀疏([3 2 3 3 3 3 2 34 3 6 3 2 3 3 3 3 2 3 3 6],[10235 11470 21211 33322 49297 88361 91470 127422 152383 158751 166485 171471 181211 193321 205548 244609 251470 283673 312384 318752],真正);
其中包含20个元素.Matlab应该分配不超过(4 + 4 + 1)*20 = 180字节的内存(看起来索引长度为4个字节).然而
谁的
说矩阵在内存中占用1275112字节,这是一个问题,因为我需要存储数千个这样的字节.
知道为什么会这样吗?
干杯!
MATLAB中稀疏矩阵的存储器存储格式是一个密集的列指针数组.每个列指针指向一个非零元素列表,每个元素都需要一个索引和一个值.所以公式是
(max column num) x P + (num nonzero) x (P + S)
Run Code Online (Sandbox Code Playgroud)
其中P是指针大小(64位系统上为8个字节,32位系统上为4个字节),S是单个元素的大小.1为逻辑.对于你的问题,我得到1275108,或"足够接近".
那该怎么办呢?请注意大内存驱动程序:最大列数,因为列指针密集.在您的情况下,如果您反转索引顺序并存储矩阵的转置,它只需要236个字节(在32位系统上).
归档时间: |
|
查看次数: |
323 次 |
最近记录: |