2010-05-11 18 views
6

Tengo un conjunto de puntos de datos, cada uno de los cuales pertenece a un determinado grupo (grupo). Necesito dibujar un polígono alrededor de cada uno de estos grupos. ¿Alguien sabe cómo hacerlo?Dibujando un polígono alrededor de grupos de puntos de datos en MATLAB

No importa si uso o no los puntos de datos reales para dibujar el polígono. Solo necesito que estén envueltos en un polígono.

Respuesta

7

Pruebe la función convhull. Devuelve los índices de los puntos en su conjunto de datos que definirán el casco convexo. Tendrás que hacer esto para cada grupo que tramas.

Por ejemplo:

x=rand(1,100); %#generate x and y data for your clusters 
y=rand(1,100); 
k=convhull(x,y); %#generate indices marking the outermost points 

hold on 
plot(x,y,'b.') %# plot your cluster points 
plot(x(k),y(k),'r-') %# plots only k indices, giving the convex hull 

Esto le dará un polígono cuyos índices coincidir con los valores extremos de los clústeres.

1

No estoy seguro de si hay una solución prefabricada para esto, ya que no estoy muy familiarizado con MATLAB, sin embargo, esto parece que necesita una solución de casco convexo.

Espero que esto te apunta en la dirección correcta.

1

convhull solo funciona si tiene una forma convexa (como un elipsoide). Si su distribución de datos tiene curvas cóncavas, como una forma de banano, el convulver no funcionará. Afortunadamente, MATLAB tiene una función para manejar esto: alphashape

dependiendo del valor "alfa", obtienes más o menos facetas en el polígono resultante.

una vez que tenga la coordenadas x, y de las facetas, puede trazar directamente, pero el polígono tendrán lados planos, o:

en lugar de la interpolación, se puede definir un x, y, rejilla z dentro del cual para ver los datos, y preguntar, ¿está x, y dentro de la forma alfa? Si lo es, darle un valor z = 1 y si no darle un valor z = 0. entonces simplemente el contorno de la rejilla, donde z = 1.

también puede utilizar impoly para dibujar el polígono manualmente

hobbysplines en el intercambio de archivos Matlab también le permite suavizar los bordes de un polígono

Cuestiones relacionadas