Betweenness Centrality for a vertices in an adjacency matrix

조회 수: 49 (최근 30일)
Christian
Christian 2013년 7월 23일
댓글: Christine Tobler 2022년 4월 7일
Hello,
I'm trying to calculate the betweenness centrality for all nodes in an adjacency matrix. It is a weighted network. As far as I know, the Input should be the distance matrix which I have obtained from the adjacency matrix.
Then, I found the following code: http://www.mathworks.com/matlabcentral/fileexchange/10922-matlabbgl/content/matlab_bgl/betweenness_centrality.m I'm not 100% sure, but I think that this is my solution. However, I'm still new to MatLab and can't get the code running. I read some questions about varargin, but I still don't know what I need to put in here and what is meant by "set_matlab_bgl_options % for the standard options."
Any help is highly appreciated. I'm currently writing my thesis and desperately need betweenness scores for my network :) Thanks a lot!!!

답변 (6개)

Rodrigo Mesa-Arango
Rodrigo Mesa-Arango 2014년 2월 14일
Don't worry about varargin, what you actually need is an sparse matrix as input. Look at the sample code below.
(Make sure the matlabbgl code is in the path)
>> y = [ 0 1 0 0 0; 0 0 1 0 5; 0 0 0 1 0; 0 0 0 0 0; 0 0 0 5 0]
y =
0 1 0 0 0
0 0 1 0 5
0 0 0 1 0
0 0 0 0 0
0 0 0 5 0
>> s =sparse(y)
s =
(1,2) 1
(2,3) 1
(3,4) 1
(5,4) 5
(2,5) 5
>> [bc,E] = betweenness_centrality(s)
bc =
0
3
2
0
0
E =
(1,2) 4
(2,3) 4
(3,4) 3
(5,4) 1
(2,5) 2
Where bc is the node betweenness centrality and E the edge betweenness
  댓글 수: 2
uzma khan
uzma khan 2016년 2월 25일
편집: uzma khan 2016년 2월 25일
I'm trying to calculate the betweenness centrality for all edges in an adjacency matrix.when i used [bc,E] = betweenness_centrality(s) it gave the following error Undefined function or variable 'betweenness_centrality'.please someone help me how to find edge betweenness in Matlab.
Souarv De
Souarv De 2021년 4월 6일
편집: Souarv De 2021년 4월 9일
@Rodrigo Mesa-ArangoWhat is the y? Is it a adjaceny matrix or distance matrix?

댓글을 달려면 로그인하십시오.


Steven Lord
Steven Lord 2021년 4월 7일
Since this question was asked we have added the graph and digraph objects to MATLAB. Use one of those functions to create an object from the adjacency matrix (depending on whether your network is undirected or directed) then call the centrality function on the object.
  댓글 수: 4
Muhammad Tabish Bilal
Muhammad Tabish Bilal 2022년 4월 7일
Hi Steven, I am working with a city transportation network and initially analysing the structure of network in MATLAB, I found out that the recent function of CENTRALITY added to MATLAB only results into node centrality. Whereas i am also intrested in edge centrality, is there any way to calculate that in MATLAB directly without going through long scripts?
Christine Tobler
Christine Tobler 2022년 4월 7일
Hi Muhammad,
Short answer is MATLAB doesn't have a function for edge centrality instead of node centrality. Longer answer is I think I can give you a workaround that's effectively the same, but can you make a new post with this question? It will get a bit too long to answer in a comment.

댓글을 달려면 로그인하십시오.


Narges M
Narges M 2013년 7월 23일

Christian
Christian 2013년 7월 23일
Hey Narges,
thank you for your answer. I finally found this code, that seems to be running too:
However, if I take the distance as 1./Adjacency_Matrix it just returns zeros. I thought it is possible to calculate betweenness from the inverse of the adjacency matrix for each vertex. Do you, or does anybody know where the catch might be?
Thanks Christian

Antonio Serda
Antonio Serda 2022년 2월 3일
If you try to calculate the inverse of the adjacency matrix the main diagonal will transfomr to inf. Try to make the diagonal 0 again.

Muhammad Tabish Bilal
Muhammad Tabish Bilal 2022년 4월 7일
Hi all,
I just managed to solve the problem with finding the Edge betweeness of any sort of network. First i recommend to download the MATLABBLG files from this link
After adding it to the path of your current working directory. You can call the function of edge betweeness as:
[bc, E] = betweenness_centrality(s)
keep in mind that "s" should be a sparse matrix not the normal adjacency matrix. This will give you the weighted edge betweenness of your network graph.
Cheers!!!

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by