从邻接矩阵中计算matlab中的节点度

时间:2014-03-07 17:20:44

标签: matlab

这是我的矩阵,显示示例网络图

matrix =

     0     1     1     1
     1     0     1     0
     0     0     0     1
     1     1     1     0

其中一个4x4矩阵

       1)    2)    3)    4)       

1)     0     1     1     1
2)     1     0     1     0
3)     0     0     0     1
4)     1     1     1     0

我想要计算这个4x4矩阵 第1行计算我有多少1,并将第1列的第1列添加到第1行并返回1)= 5作为第1行中的总1和第1列= 5

我希望我的输出像

1=5 
2=4
3=4
4=5

2 个答案:

答案 0 :(得分:1)

一定是它 -

out = sum([matrix matrix'],2)

示例运行 -

matrix =

     1     1     1     1
     1     0     0     0
     0     1     0     1
     0     0     1     1

out =

     6
     3
     4
     5

上面的代码在对角线出现时会计算两次,如果您不想要,请使用此代码 -

out1 = sum([matrix matrix'],2) - diag(matrix)

示例运行 -

matrix =

     1     1     1     1
     1     0     0     0
     0     1     0     1
     0     0     1     1

out1 =

     5
     3
     4
     4

答案 1 :(得分:1)

我同意Divakar的答案,但是一旦你的图表越来越大,你可能不想转置整个矩阵。我建议先做总和,然后转置:

    sum(matrix,1)'+sum(matrix,2)-diag(matrix);

    matrix =

              0     1     1     1
              1     0     1     0
              0     0     0     1
              1     1     1     0

    degree=sum(matrix,1)'+sum(matrix,2)-diag(matrix)

    degree =

              5
              4
              4
              5