|
Polygon |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2014, 10:56
Titel: Punkte zuweisen
|
 |
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
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
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.12.2014, 11:08
Titel:
|
 |
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
|
|
|
hardi |

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 30.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2014, 11:15
Titel:
|
 |
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ß
|
|
|
Polygon |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2014, 11:57
Titel:
|
 |
@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
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.12.2014, 12:05
Titel:
|
 |
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
|
|
|
Polygon |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.12.2014, 12:13
Titel:
|
 |
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
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.12.2014, 13:45
Titel:
|
 |
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|