我有一个图表 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
说实话,我想听听一些关于我的想法和改进建议的意见或任何其他方式,如果有的话。