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

parallele Ebenen mit minimalen Abstand

 

bbflo
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 14:03     Titel: parallele Ebenen mit minimalen Abstand
  Antworten mit Zitat      
Hallo Leute,
ich habe ein kleines Problem mit Ebenen.
Ausgangspunkt ist eine Punktwolke, von beliebig vielen Punkten, die alle mit geringer Abweichung in einer Ebene liegen, siehe angehängtes Bild. Diese Ebene nenne ich Soll-Ebene.
Nun möchte ich durch den höchsten und niedrigsten Punkt jeweils eine Ebene ("Fit-Ebenen") legen, so dass die obere und die untere Fit-Ebene zueinander parallel sind und den geringsten Abstand voneinander haben.
Die Fit-Ebenen müssen nicht parallel zur Soll-Ebene sein, aber alle Punkte der Punktwolke müssen zwischen den Fit-Ebenen liegen.
Mein Ziel ist also salopp gesagt, zu wissen, wie groß der Bereich ist, in dem alle Punkte der Punktwolke liegen.
Mein Vorgehen war, mittels PCA (Hauptkomponenten Analyse) eine Ebene durch alle Punkte zu legen und dann die Abstände zu der PCA-Ebene zu berechnen.
Wie im angehängten Bild dargestellt, liefert mir das für bestimmte Spezialfälle aber keine befriedigende Lösung. Die zwei Fit-Ebenen müssten parallel zur Linie im rechten Bild liegen und nicht parallel zur PCA-Ebene im linken Bild.
Hat hier jemand eine Idee, wie ich das lösen könnte?
Bin für jeden Hinweis/ Tipp sehr dankbar.
Liebe Grüße,
flo

Ebenenproblem.JPG
 Beschreibung:

Download
 Dateiname:  Ebenenproblem.JPG
 Dateigröße:  35.64 KB
 Heruntergeladen:  983 mal
Private Nachricht senden Benutzer-Profile anzeigen


flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 17:34     Titel:
  Antworten mit Zitat      
Was ist das Problem, also was willst Du mit den Daten machen?
Private Nachricht senden Benutzer-Profile anzeigen
 
bbflo
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 17:56     Titel:
  Antworten mit Zitat      
Ich möchte aus den Punkten die Abweichung von der Soll-Ebene, also die Toleranz berechnen.
Dabei ist es egal, ob die Fit-Ebenen jetzt parallel zur Soll-Ebene sind oder nicht, hauptsache der Abstand ist minimal.
Ich möchte sozusagen rausfinden, wie hoch die minimale Höhe eines Quaders ist, der alle Punkte der Punktwolke enthält.
Ist mein Problem jetzt klarer?
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 18:19     Titel:
  Antworten mit Zitat      
bbflo hat Folgendes geschrieben:
Ich möchte aus den Punkten die Abweichung von der Soll-Ebene, also die Toleranz berechnen. [...] Ist mein Problem jetzt klarer?


Mir ist schon klar "was" Du da machen willst, die Frage ist "wofür". Eine PCA ist letztendlich eine Eigenwert- und Eigenvektorbestimmung + Sortierung + Matrixvektor-Multiplikation. Das ist sehr aufwändig, gerade wenn die Datenmenge groß ist und hier nicht notwendig

Ich gehe davon aus, dass Dir Deine Soll-Ebene bekannt ist und somit kannst Du z.B. mit Hilfe einer Fehlerfunktion (SEE) den Fehler bestimmen. Im Fall einer Ebene, einfach den Abstand zwischen Punkt und Ebene nehmen, quadrieren und summieren (bzw. als Fehlerfunktion kann man natürlich auch etwas anderes nehmen). Dies ist um einiges effektiver und hat nicht die numerische Berechnung von Eigenwerten dabei.
Der Fehler gibt dann letztendlich an, wie gut Deine Punkte zur Ebene liegen, liegen die Punkte alle in der Ebene, ist der Fehler 0.

bbflo hat Folgendes geschrieben:

Dabei ist es egal, ob die Fit-Ebenen jetzt parallel zur Soll-Ebene sind oder nicht, hauptsache der Abstand ist minimal.


Anhand des Fehler kannst Du dann die Lage einer Ebene optimieren, indem Du eben eine Ebene generierst, die "optimal" (was Du dann definieren musst) ist, wobei man das dann mit verschiedenen Verfahren optimieren kann, letztendlich minimiert / maximiert man dann eine Funktion. Eine ähnliche Optimierung findet sich in http://de.wikipedia.org/wiki/Support_Vector_Machine
Private Nachricht senden Benutzer-Profile anzeigen
 
bbflo
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 20:56     Titel:
  Antworten mit Zitat      
Vielen Dank für Deine Antwort, aber leider kann ich Dir nicht zu 100% folgen.

Zitat:
Ich gehe davon aus, dass Dir Deine Soll-Ebene bekannt ist und somit kannst Du z.B. mit Hilfe einer Fehlerfunktion (SEE) den Fehler bestimmen.

Ich weiß, dass die Punkte ungefähr eine Ebene beschreiben, aber ich habe z.B. keinen festen z-Wert der diese Ebene beschreibt. Bei meiner Vorgehensweise benutze ich PCA um mir eine Ebene durch die Punkte zu legen und von dieser Ebene ausgehend berechne ich dann die Abstände.
Das funktioniert bei manchen Spezialfällen aber eben nicht so gut.
Ich würde das Problem auch gerne ohne PCA lösen, weiß aber nicht wie.

Vielleicht noch ein Beispiel zur Verdeutlichung:
Bei einem beliebig gefertigtem Bauteil in Form eines Würfels möchte ich die Ebenheit einer bestimmten Fläche messen. Nehmen wir an ich messe die Koordinaten einer bestimmten Anzahl von Punkten der Fläche ein und habe nun meine Punktwolke mit meinen Messpunkten als Tabelle vorliegen. Aus diesen Daten möchte ich die Toleranz bestimmen.
Dabei interessiert es mich nicht, ob meine Fläche leicht verkippt bezüglich der anderen Würfelflächen ist, auch nicht die Abweichung der Fläche von einer perfekt flachen Ebene, die durch meine Messpunkte gefitted ist.
Sondern nur der kleinst mögliche Abstand zwischen zwei parallelen Ebenen, zwischen denen alle Punkte liegen.

Ich habe schon überlegt, ob ich alle Punkte in eine Ebene projiziere, im rechten bild z.B. in die x-z-Ebene. Dann würde eine Gerade durch die Punkte reichen, bei der der maximale Abstand zwischen jedem Punkt und der Gerade minimal ist.
Least square liefert mir ja nur die minimale Summe der Fehlerquadrate, in dem Fall würde mich aber nur eine Minimierung des größten Abstandes interessieren.

Nochmal Danke dass Du mir versuchst zu helfen.
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 21:38     Titel:
  Antworten mit Zitat      
Nur dass ich es verstehe, Du hast eine Punkte, die eine Ebene beschreiben, Du hast keine Ebene vorgegeben?

Wenn die Punkte eine Ebene beschreiben, dann wäre die Ebene, die beschrieben wird, wenn Du gedanklich in Deine Punktwolke eine Ebene so hineinlegst, dass von allen Punkten der Abstand der Ebene minimal ist. Vereinfacht ausgedrückt: Konstruiere zufällig eine Ebene in Deiner Punktwolke und verändere die Lange so lange, bis der Fehler nicht mehr kleiner wird. Rein fachlich optimierst Du die Lange der Ebene in der Punktwolke. Der minimale Fehler gibt Dir dann an, wie gut Du gefittet hast bzw. sollte der Toleranz entsprechen.

Mir ist nicht klar, warum Du da mit 2 parallelen Ebenen rumhantieren möchtest, denn Du hast Punkte, die eine Ebene beschreiben, d.h. entweder bestimmst Du den Fehler zu einer von Dir vorgegebenen Ebene, das wäre dann so etwas wie Abweichung von dem Soll-Zustand oder Du kannst in die Punktdaten eine Ebene hineinlegen und das entspricht der Lageoptimierung einer zufällig initialisierten Ebene (beachte dabei, dass das Optimieren letztendlich in einem lokalen Optimium endet und nicht in einem globalen, d.h. Du solltest die Startparameter der zufittenden Ebene schon passend wählen). In diesem Fall gibt der Fehler der Fehlerfunktion, die Du optimierst, so etwas wie die Güte wieder, d.h. wie gut sind Deine Punkte im Verhältnis zur Ebene.
Aufgrund dieses Fits, kannst Du dann so etwas wie die "Dicke" der Ebene bestimmen, denn die zwei Punkte, die am dichtesten an der gefitteten Ebene liegen liefern dann so etwas wie die Ausdehnung. D.h. nach dem Ebenenfit, suchst Du 2 Punkte, die minimalen Abstand zur Ebene haben und der eine muss ober- und der unterhalb der Ebene liegen. Damit hättest Du dann so etwas wie die Ausdehnung der Ebene.

siehe dazu den Link zur SVM, denn diese macht so etwas. Sie bestimmt zwischen 2 Punktmengen eine Ebene mit optimaler Lage, d.h. so dass die Ebene von den beiden Punktmengen möglichst weit entfernt liegt.
Private Nachricht senden Benutzer-Profile anzeigen
 
bbflo
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 22:57     Titel:
  Antworten mit Zitat      
flashpixx hat Folgendes geschrieben:
Nur dass ich es verstehe, Du hast eine Punkte, die eine Ebene beschreiben, Du hast keine Ebene vorgegeben?.

Ich habe Punkte die -mehr oder weniger gut- eine Ebene beschreiben.

Verstehe ich Dich richtig? Du schlägst vor, zunächst eine Ebene irgendwie durch die Punkte zu legen, dann die Abstände der Punkte zur Ebene zu messen und dann iterativ die Lage der Ebene zu verändern, so lange bis der maximale Abstand eines einzelnen (dem "schlechtesten") Punktes zu der Ebene minimal wird?

Ja, glaube das wäre wahrscheinlich eine Möglichkeit.

Zitat:
Aufgrund dieses Fits, kannst Du dann so etwas wie die "Dicke" der Ebene bestimmen, denn die zwei Punkte, die am dichtesten an der gefitteten Ebene liegen liefern dann so etwas wie die Ausdehnung. D.h. nach dem Ebenenfit, suchst Du 2 Punkte, die minimalen Abstand zur Ebene haben und der eine muss ober- und der unterhalb der Ebene liegen. Damit hättest Du dann so etwas wie die Ausdehnung der Ebene.


Das verstehe ich nicht, hast Du Dich vielleicht vertippt? Für meine Toleranz sind nicht die Punkte entscheidend, die am dichtesten an der Ebene sind bzw. den minimalen Abstand haben, sondern die Punkte, die im Vergleich zu allen anderen Punkten den maximalen Abstand zu der gefitteten Ebene haben.

Die Ebenheit-Toleranz ist etwas umständlich über die zwei von mir genannten Ebenen, bzw. Geraden definiert. Deshalb war das mein Ansatzpunkt.

Besten Dank für Deine Hilfe, ich versuche mal damit weiter zu kommen.
Wenn Du, oder sonst noch jemand anderes, noch eine Idee oder Anmerkung hat, immer her damit Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 23:05     Titel:
  Antworten mit Zitat      
bbflo hat Folgendes geschrieben:

Verstehe ich Dich richtig? Du schlägst vor, zunächst eine Ebene irgendwie durch die Punkte zu legen, dann die Abstände der Punkte zur Ebene zu messen und dann iterativ die Lage der Ebene zu verändern, so lange bis der maximale Abstand eines einzelnen (dem "schlechtesten") Punktes zu der Ebene minimal wird?


Ja genau das meine ich. Denn gedanklich sollten ja im optimalen Fall alle Punkte "in" der Ebene liegen, also der Fehler von Punkte zu Ebene gleich Null sein. Real hast Du ja Messungenauigkeiten usw drin, d.h. also ist das Ziel einen möglichst "kleinen" Fehler.
Wie schon gesagt, die Support-Vector-Machine macht genau das, Du kannst die Ebene durch die so genannten Support-Vektoren beschreiben, d.h. die Vektoren, die am dichtesten an der Ebene liegen.

Du hats praktisch 2 Möglichkeiten: Wenn Du weisst welche Punkte über und unterhalb der zu findenden Ebene liegen, dann kannst Du direkt die SVM nehmen, Algorithmus gibt es als Matlabimplementieren, d.h. die Punkte die oberhalb liegen bekommen das Label "oben" und die unten liegen "unten", damit fütterst Du dann die SVM und bekommst direkt die Ebene bestimmt.
Wenn Du das nicht machen kannst, dann musst Du eben den Fehler optimieren, d.h. Du musst das mathematisch formalisieren und dann numerisch optimieren (SVM macht letztendlich Lagrange Optimierung).
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.08.2012, 10:55     Titel: Re: parallele Ebenen mit minimalen Abstand
  Antworten mit Zitat      
Hallo bbflo,

Du suchst die zwei parallelen Ebenen, die alle Punkte umschließen und die einen minimalen Abstand haben. Dann sollte eine der beiden Ebenen durch eine Fläche der Konvexen Hülle gehen. Die andere geht dann durch den Punkt, der am weitesten von dieser Ebene entfernt ist. Wenn Du nur wenige Punkte hast, also z.B. < 1000 sollte die Berechnung der Konvexe Hülle und das Testen aller einzelnen Flächen in erträglicher Zeit berechenbar sein.

So, nun bitte ich um eine Diskussion, ob die Idee überhaupt stimmt. Ich finde nämlich nich auf Anhieb einen Beweis dafür. Allerdings auch kein Gegenbeispiel...

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2012, 11:14     Titel:
  Antworten mit Zitat      
Bei der konvexen Hülle hast Du das Problem der Eindeutigkeit, denn es existieren unendlich viele Ebenen, die die Hülle schneiden. Da Du alle durchprobierst (Brute-Force) ist das extrem aufwändig.
Durch die genannte Fehleroptimierung kann ich schon zu beginn beeinflussen wohin das Verfahren konvergiert.

Die konvexe Hülle umschließt zwar die Punktwolke, aber Du kannst nicht ohne die Ebene bzw. deren Lage zu kennen den "weitesten Punkt" finden. Denn ich müsste zunächst "irgendeine" Ebene bestimmen, dann die Abstände zu den Punkten und dann eben den Punkt nehmen, der passend ist. Da ich aber die Ebene nicht eindeutig bestimmen kann, ist das ein typisches Henne-Ei-Problem und es ist nicht lösbar.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tithayer
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 30.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2015, 10:19     Titel:
  Antworten mit Zitat      
Wurde dieses Thema irgendwann gelöst?
Ich habe die gleiche Aufgabenstellung, und stehe vor den gleichen Schwierigkeiten wie bbflo...

Grüße,

Tithayer
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.