2010-05-11 19 views
6

Ich habe eine Reihe von Datenpunkten, von denen jeder zu einem bestimmten Cluster (Gruppe) gehört. Ich muss ein Polygon um jeden dieser Cluster zeichnen. Weiß jemand wie es geht?Zeichnen eines Polygons um Gruppen von Datenpunkten in MATLAB

Es spielt keine Rolle, ob ich die tatsächlichen Datenpunkte zum Zeichnen des Polygons verwende oder nicht. Ich brauche sie nur in ein Polygon gewickelt werden.

Antwort

7

Versuchen Sie die convhull Funktion. Er gibt die Indizes von den Punkten in Ihrem Datensatz zurück, die die konvexe Hülle definieren. Sie müssen dies für jeden Cluster, den Sie plotten, tun.

Zum Beispiel:

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 

Dies wird Ihnen ein Polygon, deren Indizes decken sich mit den Ausreißern Ihrer Cluster.

1

Ich bin mir nicht sicher, ob es eine vorgefertigte Lösung dafür gibt, da ich MATLAB nicht sehr gut kenne, aber das klingt nach einer konvexen Hüllenlösung.

Hoffe das zeigt Ihnen in die richtige Richtung.

1

Convhull funktioniert nur, wenn Sie eine konvexe Form (wie ein Ellipsoid) haben. Wenn Ihre Datenverteilung konkave Kurven aufweist, z. B. eine Bananenform, funktioniert Convhull nicht. Zum Glück hat MATLAB eine Funktion, um das zu handhaben: alphashape

Je nach "Alpha" -Wert erhalten Sie mehr oder weniger Facetten im resultierenden Polygon.

sobald man die x haben, y-Koordinaten der Facetten, kann man sie entweder direkt plotten aber das Polygon flache Seiten haben, oder:

anstelle des Interpolierens, können Sie eine x, y, z Raster definieren, innerhalb welcher die Daten zu sehen und zu fragen, ist x, y innerhalb der Alpha-Form? Wenn es ist, geben sie einen Wert z = 1, und wenn nicht, geben sie einen Wert z = 0 ist dann einfach das Gitter konturieren, wobei z = 1

kann man auch verwenden, um die impoly Polygon zu zeichnen manuell

Hobbysplines auf dem Matlab-Dateiaustausch ermöglicht Ihnen auch, die Kanten eines Polygons zu glätten

Verwandte Themen