【发布时间】:2014-11-03 07:58:03
【问题描述】:
假设我有一个稀疏矩阵M 具有以下属性:
size(M) -> 100000 100000
sprank(M) -> 99236
nnz(M) -> 499987
numel(M) -> 1.0000e+10
为什么解决系统需要超过 8GB 的 RAM? whos('M') 仅提供 8.4mb。
我正在使用以下代码(提供于http://www.mathworks.com/moler/exm/chapters/pagerank.pdf)
function x = pagerank(G,p)
G = G - diag(diag(G));
[n,n] = size(G);
c = full(sum(G,1));
r = full(sum(G,2));
% Scale column sums to be 1 (or 0 where there are no out links).
k = find(c~=0);
D = sparse(k,k,1./c(k),n,n);
% Solve (I - p*G*D)*x = e
e = ones(n,1);
I = speye(n,n);
x = (I - p*G*D)\e;
% Normalize so that sum(x) == 1.
x = x/sum(x);`
【问题讨论】:
-
我必须说我使用了 32Gb 的 RAM 内存,以便能够使用 mldivide() 而不会出现您大小的矩阵问题。
标签: matlab out-of-memory linear-algebra sparse-matrix pagerank