Effacer les filtres
Effacer les filtres

find neighbours of neighbours

2 vues (au cours des 30 derniers jours)
em
em le 3 Mar 2015
Commenté : em le 4 Mar 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

Réponse acceptée

Matt J
Matt J le 3 Mar 2015
Modifié(e) : Matt J le 3 Mar 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 commentaires
Matt J
Matt J le 3 Mar 2015
Modifié(e) : Matt J le 3 Mar 2015
Yep. My code is consistent with that. Nodes 2 and 4 are two layers apart, as are nodes 7 and 8.
em
em le 4 Mar 2015
This works! Thanks alot!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Statistics and Machine Learning Toolbox dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by