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

Punkte sortieren

 

maryouma
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 21.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2011, 14:40     Titel: Punkte sortieren
  Antworten mit Zitat      
Hallo Zusammen,

ich möchte Punkte auf einem Bild sortieren duch ein angegeben (Fix) Punkt. D.h. ausgehend vom Fixpunkt soll immer der ncähste Kontaktpunkt gesucht werden, um die Reihenfolge zu ermitteln.

wie kann ich die Punkte in Reihenfilg erstens suchen und dann aussortieren?

Mfg
Mariem
Private Nachricht senden Benutzer-Profile anzeigen


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 22.03.2011, 08:12     Titel:
  Antworten mit Zitat      
Hi,

ich bin mir nicht ganz sicher, was Du exakt meinst.
Anhand Deiner Beschreibung könnte das aber so etwas wie der
kmeans-Algorithmus (Cluster-/Regionenbildung) sein ?

Siehe auch wikipedia:
http://de.wikipedia.org/wiki/K-Means-Algorithmus

Grüße
Andreas
Private Nachricht senden Benutzer-Profile anzeigen
 
maryouma
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 21.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2011, 10:23     Titel:
  Antworten mit Zitat      
Hallo,
danke Andreas, das hat mir leider nicht weiter geholfen.
ich habe bei meinem Bild der Abstand zwischen Fixpunkt und die andere Punkt gerechnet und dadurch muss ich jetzt die Koordinaten der Punkte rausfinden
welche Code muss ich benutzen?
L.g.
Maryouma
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 25.03.2011, 11:56     Titel:
  Antworten mit Zitat      
Hallo,

also ich verstehe dein Problem auch nicht. Wenn du einen Fixpunkt mit bekannten Koordinaten und den Abstand zu den anderen Punkten hasst, dann lassen sich doch auch die Koordinaten der anderen Punkte berechnen?

Zitat:

welche Code muss ich benutzen?


Am besten du zeigst erstmal deinen bisherigen Code und dann koennen wir an etwaigen Problemem basteln. Einen ganzen Code fuer dein Problem wird dir hier niemand bereitstellen koennen.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
maryouma
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 21.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2011, 12:10     Titel:
  Antworten mit Zitat      
Hallo Sco,

so bin ich bisher gekommen:

xw=2460;
yw=1315;
for i=1:size(area,1)
distance([area(i).Centroid(1) xw], [area(i).Centroid(2) yw]);
min (distance([area(i).Centroid(1) xw], [area(i).Centroid(2) yw]));
end

Mein Problem ist dass ich nach der Berechnung dem Abstand die Koordinaten der anderen Punkte nicht berechnen kann
Mfg
Maryouma
Private Nachricht senden Benutzer-Profile anzeigen
 
aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 25.03.2011, 12:12     Titel:
  Antworten mit Zitat      
Hi,

in SciLab habe ich mal folgenden Code erstellt:
Code:

function pnew=pointsort(pold,pfix);

[lhs,rhs]=argn();
if rhs==1,
   pfix=pold(1);
   pold=pold(2:$);
end

pnew=[];
N=length(pold);

while N>1,
   d=abs(pold - pfix);
   ki=find(d == min(d))
   krest=find(d > min(d));
   if length(ki)>1,
      ki=ki(1);
      krest=[krest,ki(2:$)];
   end

   pnew=[pnew,pold(ki)];
   pfix=pold(ki);
   pold=pold(krest);
   N=length(pold);
end

pnew=[pnew,pold];

endfunction;
 


Innerhalb der while-Schleife suche ich von komplexen Punkten immer den nächstgelegenen Punkt. Dieser wird in den Ergebnisvektor angehängt und aus dem ursprünglichen Vektor entfernt.

Hauptfunktionen hierbei:
find (gibt es auch in Matlab)
min ( " )
%i (imaginäre Einheit)

Beispiel:
p=rand(1,10) + %i .*rand(1,10);
pout=pointsort(p,p(1))
plot(real(p),imag(p),'b*');
plot(real(pout),imag(pout),'r-'); % Bei matlab mit Hold on arbeiten

Kommt das so ungefähr hin ?

Bei SciLab könntest Du auch die metNet-Toolbox (Graphentheorie) hierfür verwenden.

Jetzt musst Du nur die Bildpunkte in komplexe zahlen wandeln.

Grüße
Andreas
Private Nachricht senden Benutzer-Profile anzeigen
 
maryouma
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 21.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2011, 09:53     Titel:
  Antworten mit Zitat      
Hallo Andreas,
Vielen Dank für dein Antwort!
ich habe ein paare Sachen, die ich nicht verstanden habe, und zwar die Rolle der Funktion "argn()"
Jedes mal wenn ich Befehl "pointsort(pold,pfix)" eingebe kriege ich die Meldung "??? Undefined function or method 'pointsort' for
input arguments of type 'double'." wieso denn?

soll ich alles auf Scilab anwenden und was ist der Unterschied zwischen Matlab und Scilab?

Vielen dank noch einmal!
Maryouma
Private Nachricht senden Benutzer-Profile anzeigen
 
aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 28.03.2011, 14:43     Titel:
  Antworten mit Zitat      
Hi,

argn ist ein spezieller SciLab-Befehl. Er ermittelt, wie viele Ein- und Ausgabeargumente verwendet werden. Den gibt es so in Matlab nicht.

In Matlab gibt es dafür die Befehl nargin und nargout (nargchk ?)

Falls Du also immer mit einem oder zwei Befehlen arbeitest, einfach weglassen.

Grüße
Andreas
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2024 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.