WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Problem mit convhull

 

me2312

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2012, 17:04     Titel: Problem mit convhull
  Antworten mit Zitat      
Hallo!

Ich versuche gerade Koordinaten mit Hilfe von convhull zu sortieren.
Ausgehend habe ich 2 Vektroren mit P_x für die x- Werte und P_y für die y-Werte.

Als Ergebnis sollten die Koordinaten sortiert in der Matrix A stehen.
(sortiert bedeutet in diesem fall in der x-y Ebene in einer Reihenfolge / egal ob im oder gegen den Uhrzeigersinn)

Code:

 P_x = [3 1 5 5 7 3];
 P_y = [1 4 0 2 1 4];
 n = length(P_x);
 K = convhull(P_x,P_y);
 
 A = zeros(n,2);
 A(:,1) = P_x(K);
 A(:,2) = P_y(K);
 


Als Ausgabe erhalte ich derzeit:

3 1
5 0
7 1
3 4
1 4
3 1

Warum schreibt er die Koordinaten (3,1) 2mal und wohin ist der Punkt (5,2) ? :O

Vielen Dank für eure Hilfe!


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.12.2012, 18:35     Titel: Re: Problem mit convhull
  Antworten mit Zitat      
Hallo me2312,

Für eine Sortierung im (Gegen-)Uhrzeigersinn würde ich eher Polar-Koordinaten verwenden und den nach dem Winkel sortieren.

Code:
P_x = [3 1 5 5 7 3];
 P_y = [1 4 0 2 1 4];
 Theta = cart2pol(P_x, P_y);
 [dummy, index] = sort(Theta);
 sorted_P_x = P_x(index);
 sorted_P_y = P_y(index);

Hilft das bereits?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
me2312

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2012, 20:49     Titel:
  Antworten mit Zitat      
Hallo!
Danke für deinen Hinweis,

Ich hab das jz schnell ausprobiert. Die Ausgabe wäre dabei dann

sorted_P_x =

5 7 3 5 3 1

sorted_P_y =

0 1 1 2 4 4

sprich die Paare wären (5,0) (7,1) (3,1) usw...

statt (3,1) müsste aber an 3ter stelle (5,2) stehen.

Damit du dir leichter beim verstehen tust was ich eigentlich will:
Die Ausgabe sollte so sein:

5 0
7 1
5 2
3 4
1 4
3 1

Es handelt sich dabei um die Eckkoordinaten eines Polygons. Der Startwert wäre egal sprich statt (5,0) kann man auch mit (7,1) anfangen, nur die Reihenfolge muss so sein.

Vielen Dank schonmal für deine Hilfe!
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.12.2012, 21:24     Titel:
  Antworten mit Zitat      
Hallo me2312,

Langsam komme ich dahinter, wonach Du suchst. Du meinst "im Uhrzeigersinn um den Schwerpunkt herum", oder?
Code:
Theta = cart2pol(P_x - mean(P_x), P_y - mean(P_y));
 [dummy, index] = sort(Theta);
 sorted_P_x = P_x(index);
 sorted_P_y = P_y(index);

Besser?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
me2312

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2012, 11:51     Titel:
  Antworten mit Zitat      
Der Schwerpunkt, natürlich Very Happy .

Vielen Dank, das ist genau das was ich gesucht habe! Auf die Idee mit dem Schwerpunkt bin ich leider nicht von alleine gekommen!

Schönen Tag noch,

mfg me2312
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.