2014-05-11 2 views
0

supposer:comment extraire des points qui ont une relation avec ensemble?

A=[1 2 
1 3 
2 3 
3 5 
4 3 
4 6 
8 5 
8 3 
9 7 
9 11 
9 10 
10 13 
10 12] 

les nombres dans cette matrice sont l'indice d'un nuage de points et ce point montrent la matrice qui ont une relation avec l'autre. comme vu points 1 à 8 sauf 7 construire un groupe et 9 à 12 avec 7 construire un nouveau groupe. comment puis-je trouver ces groupes? J'essaie d'utiliser la deuxième colonne et je dis que lorsque je n'ai pas un nombre inférieur à un nombre unique dans la première colonne, nous avons un nouveau groupe. Mais dans la ligne 9, cette condition est faild.

+0

Ce n'est pas clair. Que représentent chacune des deux valeurs de chaque rangée? –

+0

@OliCharlesworth toute relation entre les points. par exemple des points qui sont dans une même surface par rapport à la distance. – Ahmad

+0

@Ahmad Ceci représente une liste d'adjacence pour un graphique, correct? Vous devez toujours préciser comment vous choisissez les groupes et pourquoi votre approche n'a pas fonctionné. Du code serait bien aussi. – beaker

Répondre

0

Vous recherchez les composantes connexes du graphe non orienté induit par votre liste d'adjacence.

G = sparse(A(:,1),A(:,2),1,max(A(:,2)),max(A(:,2))); 
[num labels] = graphconncomp(G+G'); % symmetric for undirected graph 

résultant labels

1  1  1  1  1  1  2  1  2  2  2  2  2 

Comme vous pouvez le voir, 1-6 et 8 sont étiquetés '1' pendant 9 à 12 et 7 sont étiquetés '2'. Pour plus d'informations, voir pour plus d'informations.

Questions connexes