计算具有邻接矩阵的稀疏表示的度矩阵

时间:2014-06-19 09:47:39

标签: matlab sparse-matrix adjacency-matrix

我正在尝试计算图的拉普拉斯矩阵。我计算了邻接矩阵的稀疏表示,该矩阵存储在维度为Nx3的文本文件中。 N节点的大小(第i个节点的第j个节点权重)。我用Matlab打开这个文件adj = spconvert(adj);。下一步是计算该稀疏矩阵的度矩阵,以便执行操作L = D - adj。如何计算具有图的稀疏邻接矩阵作为输入的度矩阵?为了计算度矩阵,我计算每个节点的度数:

for i=1:n % size of the node
    degree(i) =  length(find(adj(:,1) == i & adj(:,3) == 1));
end

但是,如何执行D和A的减法?

1 个答案:

答案 0 :(得分:2)

使用spdiags函数将度矢量转换为稀疏对角矩阵。然后从对角矩阵中减去邻接矩阵以得到拉普拉斯算子。使用代码的示例:

adj = spconvert(adj);
for i=1:size(adj, 1)
    degree(i) = CalcDegree(adj, i)
end
D = spdiags(degree, 0, size(adj, 1), size(adj, 2));
L = D - adj;

顺便说一句,用于计算节点度的代码可能不正确。