I am trying to create a neighbourhood graph from a given binary matrix B
. Neighbourhood graph (A
) is defined as an adjacency matrix such that
(A(i,j) = A(j,i) = 1)
if the original matrix B(i) = B(j) = 1
and i
and j
are adjacent to each (left, right, up, down or diagonal). Here I used the linear subscript to access the original matrix B
. For example, consider the below matrix
B = [ 0 1 0;
0 1 1;
0 0 0 ];
My A
will be a 9 * 9 graph as given below
A = [ 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0;
0 0 0 0 1 0 0 1 0;
0 0 0 1 0 0 0 1 0;
0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0;
0 0 0 1 1 0 0 0 0;
0 0 0 0 0 0 0 0 0 ];
Since in the original B
matrix, B(4)
, B(5)
and B(8)
are adjacent with corresponding entries 1
, the adjacency matrix A
has 1
at A(4,5)
, A(5,4)
, A(4,8)
, A(8,4)
, A(5,8)
and A(8,5)
.
How can I create such an adjacency matrix A
given the matrix B
in an efficient way?