esta é a minha matriz que exibe um gráfico de rede de amostra
matrix =
0 1 1 1
1 0 1 0
0 0 0 1
1 1 1 0
onde é uma matriz 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
Eu quero contar essa matriz 4x4 como linha 1 conta quantos 1s eu tenho e adiciona coluna 1 número de 1 "s a ela e retorna 1) = 5 como total 1" s na linha 1 e col 1 = 5
Eu quero que minha saída seja como
1=5
2=4
3=4
4=5
Respostas:
1 para resposta № 1Deve ser isso
out = sum([matrix matrix"],2)
Exemplo de execução -
matrix =
1 1 1 1
1 0 0 0
0 1 0 1
0 0 1 1
out =
6
3
4
5
O código acima contaria 1s duas vezes quando aparecem na diagonal, o que, se você não quiser, use isso -
out1 = sum([matrix matrix"],2) - diag(matrix)
Exemplo de execução -
matrix =
1 1 1 1
1 0 0 0
0 1 0 1
0 0 1 1
out1 =
5
3
4
4
1 para resposta № 2
Eu concordo com a resposta de Divakar, mas uma vez que o seu gráfico fica maior e maior, você pode não querer transpor a matriz inteira. Eu sugiro fazer a soma primeiro e então transpor depois:
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