matlab中大矩阵的稀疏

时间:2015-06-24 08:19:14

标签: matlab memory matrix bigdata sparse-matrix

我有一个图表 G(L,N)其中 L 是一组链接,而 N 是一组节点。我想在MATLAB中使用需要稀疏和邻接矩阵的非常简单的代码来处理这个图。

问题是我的图表非常大(~71000个节点,~179000个链接),产生了一个相当大的邻接矩阵〜(71000x71000)。为了读取这些数据,我使用了uint32数据格式,我认为这种格式符合我的数据。但是我不知道如何将邻接转换为稀疏,因为sparse(double(Adjacency))不起作用(显然是由于内存错误)。我试图按如下方式产生稀疏的分段:

numberof10000 = ceil(size(Adjacency,1)/10000);
for i=1:numberof10000
    for j = 1:numberof10000
        if i ~= numberof10000
            if j~= numberof10000
                networkSparseOnes   = sparse(double(Adjacency((i-1)*10000+1:(i)*10000+1,...
                    (j-1)*10000+1:(j)*10000+1)));
            else
                networkSparseOnes   = sparse(double(Adjacency((i-1)*10000+1:...
                    (i)*10000+1,(j-1)*10000+1:end)));
            end
        else
            if j~= numberof10000
                networkSparseOnes   = sparse(double(Adjacency((i-1)*10000+1:end,...
                    (j-1)*10000+1:(j)*10000+1)));
            else
                networkSparseOnes   = sparse(double(Adjacency((i-1)*10000+1:...
                    (i)*10000+1,(j-1)*10000+1:end)));
            end
        end        
        totalSparse = [totalSparse;networkSparseOnes];
    end
end

说实话,我想听听一些关于我的想法和改进建议的意见或任何其他方式,如果有的话。

0 个答案:

没有答案