如何将稀疏矩阵的内存占用缩小到最小?

2次浏览(过去30天)
如何将稀疏矩阵的内存占用缩小到最小?
当我构造一个稀疏矩阵时,我不知道我需要多少个非零元素。我指定了一个上界并构造了我的矩阵,后来发现其中许多元素都没有使用过。我想从这个稀疏矩阵中恢复未使用的内存。
调用'spalloc()'函数为包含'nz'非零项的m × n稀疏矩阵分配内存
).构造稀疏矩阵后,没有函数改变'nz',以释放未使用的内存。

接受的答案

MathWorks支万博1manbetx援小组
释放'X'中未使用内存的一种变通方法是,首先构造一个临时稀疏矩阵'Y',其中包含所需的非零元素的确切数量,其次,将'X'中的元素复制到'Y'中,第三,删除'X'。非零元素的数量可以使用函数'nnz'来查找。
例如,
X = spalloc(1e6,1e6,1e4);
X(1,1) = 1;
Y = spalloc(size(X,1), size(X,2), nnz(X));%构造最小内存的临时稀疏矩阵
Y(:,:) = x (:,:);%元素赋值
清晰的X
这个解决方案在第一个实例中需要足够的内存来构造临时稀疏矩阵'Y'。

更多答案(0)

类别

了解更多稀疏矩阵帮助中心而且文件交换

s manbetx 845

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!