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 zuweisen

 

Polygon

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2014, 10:56     Titel: Punkte zuweisen
  Antworten mit Zitat      
Hi!

Ich habe zwei kleine, gleich große Punktemengen (aus drei Dimensionen) A und B. Ich möchte nun jeden Punkt in A einem Punkt in B zuweisen, so dass der gesamte Abstand zwischen den Punkten in A und den zugewiesenen Punkten in B minimiert wird. Wie macht man das? Ich könnte natürlich alle Möglichkeiten durchprobieren, aber das scheint etwas dämlich Cool

Ich habe auch etwas rumgegoogelt, und Stichwörter wie "Point matching", "point registration" gefunden, aber keine richtig konkrete Lösung, die ich sofort hätte umsetzen können.

Wie würdet ihr das machen?
Danke!


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.12.2014, 11:08     Titel:
  Antworten mit Zitat      
Hallo,

muss die Zuweisung so erfolgen, dass jedem Punkt in B genau ein Punkt von A zugewiesen wird? Oder kann einem Punkt in A auch mehrere Punkte in B zugewiesen werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
hardi
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 30.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2014, 11:15     Titel:
  Antworten mit Zitat      
Hallo,

hast mit zwei Vektoren versucht?

A=1:1:3;%
B=1:1:3;
A=[a1 a2 a3];
B=[b1 b2 b3];

A(1,1)=B(1,1)

und so weiter

Erklärung durch ein Beispiel:
Der Vektor x = [0 2 4 6 8 10 12]
Oder du kannst so eingeben
x = 0:2:12
dann erhälst du
x = 0 2 4 6 8 10 12
Die Schreibweise 0:2:12 bedeutet: beginne mit 0 und zähle 2 dazu, dann zähle wieder 2 dazu, ..., bis die Grenze 12 erreicht ist.

du kannst so schreiben

Du weist dem Anfang einen Wert zu, auch für abstand, und Ende
z.B anfang=0;
abstand= 4; Ende=8;

A= anfang= i:abstand:Ende;
B=anfang= i:abstand:Ende;
Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Polygon

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2014, 11:57     Titel:
  Antworten mit Zitat      
@Harald:
Ja, jeder Punkt soll genau einem Punkt der anderen Menge zugewiesen werden. Ich möchte sozusagen eine Zuordnung der Punkte der beiden Mengen errechnen, d.h. welche Punkte der beiden Mengen entsprechen einander.

@hardi:
Ich glaube deine Ausführungen helfen mir leider nicht weiter, oder ich verstehe nicht, worauf du hinaus willst. Die Matlab Basics kann ich (d.h. ich weiß zum Beispiel was 0:2:12 bedeutet). Und einfach eine feste Zuweisung von Indices wird es in meinem Fall nicht tun.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.12.2014, 12:05     Titel:
  Antworten mit Zitat      
Hallo,

das Durchtesten aller Kombinationen dürfte die sicherste Möglichkeit sein, auch wirklich die beste Lösung zu finden. Die Frage ist jedoch, ob dies in absehbarer Zeit möglich ist, also: wieviele Punkte enthalten A und B?

Ansonsten wäre ein Ansatz:
- zunächst jedem Punkt von A den nächstgelegenen in B zuweisen
- falls dann bestimmte Punkte von B mehrfach gewählt werden, den entsprechenden Punkten aus A Punkte zuweisen, die nicht gewählt wurden. falls nicht, ist man fertig.
- iterativ überprüfen, ob es durch Tauschen von Zuweisungen bessere Ergebnisse gibt.

Das garantiert zwar nicht die optimale Lösung, wird aber immerhin in absehbarer Zeit durchlaufen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Polygon

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2014, 12:13     Titel:
  Antworten mit Zitat      
Hi!

Hmmm...ok. Meine Mengen A und B sind nicht groß (d.h. weniger als 10 Punkte). D.h., alles durchtesten ist durchaus machbar. Ich fragte mich nur, ob es dafür nicht eine allgemeine, viel schnellere Lösung gibt.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.12.2014, 13:45     Titel:
  Antworten mit Zitat      
Hallo,

wenn es nicht extrem oft gemacht werden muss, würde ich das Durchtesten bevorzugen. Selbst für 10 Punkte sind das "nur" 3 Mio. Kombinationen, und die dürften in ~1s durchgetestet sein (natürlich vektorisieren!).

Grüße,
Harald
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 - 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.