从邻接矩阵计算matlab中的节点度
这是我的矩阵,它显示了一个示例网络图从邻接矩阵计算matlab中的节点度,matlab,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
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)=5作为第1行中的1总数,第1列=5
我希望我的输出像
1=5
2=4
3=4
4=5
一定是这样-
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
matrix =
1 1 1 1
1 0 0 0
0 1 0 1
0 0 1 1
out1 =
5
3
4
4
上面的代码在对角线上出现时会计算两次1s,如果您不想,请使用此代码-
out1 = sum([matrix matrix'],2) - diag(matrix)
示例运行-
matrix =
1 1 1 1
1 0 0 0
0 1 0 1
0 0 1 1
out =
6
3
4
5
matrix =
1 1 1 1
1 0 0 0
0 1 0 1
0 0 1 1
out1 =
5
3
4
4
我同意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