/ / преброяване възел степен в 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     1
4)     1     1     1     0

Искам да преброя тази матрица 4х4 ред 1 брои колко 1s имам и добавя колона 1 число от 1 "към него и връща 1) = 5 като общо 1" s в ред 1 и col 1 = 5

Искам продукцията ми да е като

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

Отговори:

1 за отговор № 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

Горният код ще брои 1 пъти два пъти, когато се появи на диагонала, което ако не искате, използвайте това -

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 за отговор № 2

Съгласен съм с отговора на 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