find neighbours of neighbours

2 visualizaciones (últimos 30 días)
em
em el 3 de Mzo. de 2015
Comentada: em el 4 de Mzo. de 2015
I have a matrix which represents a neighbourhood relationship of index
A=[1 2
1 4
2 6
4 5
6 7
6 8]
A is in ascending order of A(:,1) and not including duplicate neighbours, meaning [1 2] is [2 1] is considered as the same neighbourhood relationship.
In matrix A, it means index 1 is the neighbour of 2 and 4, 2 is the the neighbour of 6, and 4 is the neighbour of 5. I want to compute a matrix B that represents the neighbours of neighbour(NON) relationship. This means 1 is the NON of 5 and 6, etc.
B=[1 5
1 6
2 7
2 8]
How can I compute such B

Respuesta aceptada

Matt J
Matt J el 3 de Mzo. de 2015
Editada: Matt J el 3 de Mzo. de 2015
I think the code below would do it, but I think your example is missing some NONs. If, as you say, [1,2] and [2,1] are equivalent, then I think 2 and 4 should be NONs because they are both neighbors of 1. Similarly, 7 and 8 both neighbor 6.
m=max(A(:));
Ac=sparse(A(:,1),A(:,2),true,m,m);
Ac=double(Ac|Ac.');
Bc=(Ac*Ac)&(~Ac);
[i,j]=find(tril(Bc,-1));
B=[j,i]
  3 comentarios
Matt J
Matt J el 3 de Mzo. de 2015
Editada: Matt J el 3 de Mzo. de 2015
Yep. My code is consistent with that. Nodes 2 and 4 are two layers apart, as are nodes 7 and 8.
em
em el 4 de Mzo. de 2015
This works! Thanks alot!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by