我需要在MATLAB中生成一个大的方形二进制稀疏矩阵(大约100k x 100k)。但是我得到了内存不足和#34;错误。 有人可以帮忙吗?
答案 0 :(得分:2)
100,000 x 100,000
矩阵包含10,000,000,000
个双打。每个字节为8个字节,即80,000,000,000
字节,即大约74.5058 Gb
。
我严重怀疑你有80Gb的RAM(更不用说,只分配给matlab),所以你可能必须找到另一种方法来处理你的数据。
<小时/> 编辑道歉,我只是注意到稀疏位。
如果您尝试将稀疏矩阵初始化为sparse (zeros( 100000,100000))
,由于上述原因,这将失败(即您要求octave / matlab首先存储75Gb的零矩阵,并且仅然后将其转换为稀疏矩阵。)
相反,您应该初始化100,000x100,000稀疏矩阵,如下所示:
s = sparse(100000,100000);
然后继续填写其内容 假设稀疏矩阵中非零元素的数量足够低,可以使用系统的内存轻松处理它们,并且您可以在不分配大的坏矩阵的情况下填写必要的值。首先,这应该工作正常。
查看sparse
函数,了解从数据初始化稀疏矩阵的其他方法。
答案 1 :(得分:0)
尝试增加系统交换文件的大小。