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

Ebene in 3-dimensionales Koordinatensystem plotten

 

Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.03.2012, 22:02     Titel:
  Antworten mit Zitat      
ich glaube dir ist nicht ganz klar was du machst ^^
deine gleichung oben definiert nur eine ebene wenn f bekannt ist .
ich hatte im ersten beispiel für f=8 genommen
wenn du einfach 1 nimmst wie von dir gepostet kann das nicht klappen und wenn dann nur aus glück
außerdem ist in matlap 0,5 nicht das gleiche wie 0.5. auf die richtige schreibweise achten. außerdem scheint deine berechnete gleichung nicht zu stimmen.

Code:
a1 = [0.529164   0.50625 0.53035 0.55092  0.52828 0.53733];
a2 = [0.47295  0.47293  0.47297  0.47294  0.47295  0.47294];
a3 = [0.6549585  0.6644447 0.658742  0.6616399  0.65794936  0.67793];

b1 = [0.2064788  0.2167866  0.21343255 0.217108  0.219617 0.2173145];
b2 = [0.4729485  0.4729649  0.47296735  0.4729887 0.472975  0.472954];
b3 = [0.7912018  0.8106655 0.81179  0.814831  0.82411 0.827832];

 
plot3(a1,a2,a3,'*','color','red')
hold on
plot3(b1,b2,b3,'*','color','blue')
x3=@(x1,x2,f) (f-(614.6093 + 26.2980*x2 -1322.4277*x1))/-25.9125;
x=0:1;
y=0:1;
[X,Y]=meshgrid(x,y);
Z=x3(X,Y,30);
surf(X,Y,Z)

passt zb besser. guck da nochmal nach
Private Nachricht senden Benutzer-Profile anzeigen


cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2012, 22:34     Titel:
  Antworten mit Zitat      
Hi, du hast recht. ich habe noch nicht so ganz verstanden, wie das funktioniert Confused

Ich verstehe gerade nicht so ganz, was es auf sich hat mit dem wert für f. Wenn ich die Parameter für die Ebene gegeben habe, wie bestimme ich dann den Wert f?

Ich habe zum Beispiel ganz allgemein die Ebenengleichung:

Code:
f=p0+p1x1 +p2x2 +p3x3


und die Parameter p0,p1,p2,p3 sind gegeben. Wie komme ich dann auf den Wert f? Wie kommst du auf Z=x3(X,Y,30);

Die Sache mit dem Komme, also das man statt 0,5 0.5 schreiben muss, weiß ich. das Habe ich auch in meinem Code richtig, habe es nur beim Kopieren nicht mehr geändert. Aber trotzdem danke.

Danke nochmal für die umfangreiche Hilfe.

Gruß
cey
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2012, 06:48     Titel:
  Antworten mit Zitat      
die 30 für f hab ich geraten. er verschiebt die ebene ja nur in z richtung.
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2012, 09:21     Titel:
  Antworten mit Zitat      
ok. für mich wäre es wichtig, f zu berechnen und nicht zu raten.

Dazu vielleicht ne Idee?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2012, 09:36     Titel:
  Antworten mit Zitat      
du könntest versuchen die summe der abstände zur ebene zu minimieren. wenn die punktwolken räumlich so getrennt sind würde ich schätzen das das ergebniss dann in der mitte liegt. jeweils einen punkt aus den beiden punktwolken aussuchen und dann in die mitte setzen. eine eben zu plotten und eine zu berechnen sind ja 2 paar schuhe. mach dir mal gedanken nach welchen kriterien du die ebne berechnest. wenn dann probleme bei der umsetzung deiner lösung auftreten können wir dir hir bestimmt weiter helfen
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2012, 09:53     Titel:
  Antworten mit Zitat      
Okay, nochmal ganz kurz. Was sagt der Wert f überhaupt aus? das ist mir noch nicht ganz klar. Ich weiß, dass ich damit meine Ebene verschiebe. Aber müsste es nicht eine eindeutige Lösung geben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2012, 10:03     Titel:
  Antworten mit Zitat      
hmm wenn dir der mathematische hintergrund deiner sachen unklar ist sollte du vieleicht erst daran arbeiten bevor du das in matlab plottest Smile
hir ein link zu einer veranschaulichung zu ebenengleichungen

Ebenen
sonst nochmal in nem schul tafelwerk nachgucken da steht das glaub ich auch drin
grüße winkow
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2012, 14:06     Titel:
  Antworten mit Zitat      
Hi, also ich habe es jetzt ein paar stunden probiert, aber irgendwie bekomme ich es nicht hin. Ich weiß zwar wie man eine Ebene berechnet, danke nochmal für dien Link, komme aber trotzdem nicht weiter.

Ich versuche es noch etwas, aber wäre trotzdem dankbar, wenn mir hier jemand etwas hilfestellung geben könnte

gruß
cey
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2012, 14:09     Titel:
  Antworten mit Zitat      
wie berechnest du denn diene ebene? und nach welchen kriterien willst du sie bestimmen ? ebenen die die punktwolken trennen giebt es unendlich viele.
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2012, 14:30     Titel:
  Antworten mit Zitat      
ich habe die allgemeine Form, also

y=a0+a1x1+a2x2+a3x3

Die Ebene, welche die beiden Punktmengen optimal trennt, lässt sich durch ein Optimierungsproblem lösen, indem ich die abstände der einzelnen Punktwolken maximiere und die Streuung innerhalb der Punktwolke minimiere. Damit erhalte ich die Koeffizienten a1,a2,a3.

Damit erhalte ich die Ebenengleichung in Koordinatenform.

Im zweidimensionalen Raum bekomme ich das noch hin, aber mit einer zusätzlichen dritten Koordinate ist es schwierig
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2012, 14:59     Titel:
  Antworten mit Zitat      
hmm mit optimisation ist es schwierg zu sagen das die einen punkte immer oberhalb der fläche und die andern immer drunter liegen sollen. wenn man das einfach den abstand zur fläche optimiert bekommt man ja die fläche die durch beide punktwolken durch geht.
ich würde glaube ich versuchen eine art mittelpunkt der beiden punktwolken zu bestimmen. dann hast du ja den normalen vektor der eben.dann würde ich einfach die eben in die mitte zwischen diese beiden punkte setzen.

das hir wäre meine idee dazu
Code:
a1 = [0.529164   0.50625 0.53035 0.55092  0.52828 0.53733];
a2 = [0.47295  0.47293  0.47297  0.47294  0.47295  0.47294];
a3 = [0.6549585  0.6644447 0.658742  0.6616399  0.65794936  0.67793];

b1 = [0.2064788  0.2167866  0.21343255 0.217108  0.219617 0.2173145];
b2 = [0.4729485  0.4729649  0.47296735  0.4729887 0.472975  0.472954];
b3 = [0.7912018  0.8106655 0.81179  0.814831  0.82411 0.827832];

funa=@(x) sum((x(1)-a1).^2+(x(2)-a2).^2+(x(3)-a3).^2);
funb=@(x) sum((x(1)-b1).^2+(x(2)-b2).^2+(x(3)-b3).^2);
xma=fminsearch(funa,[a1(1),a2(1),a3(1)]);
xmb=fminsearch(funb,[b1(1),b2(1),b3(1)]);

%%

plot3(a1,a2,a3,'*','color','red')
hold on
plot3(b1,b2,b3,'*','color','blue')
x=0:0.1:0.8;
y=0:0.1:0.8;
n=(xmb-xma);
P0=xma+(xmb-xma)/2;
Z=@(x1,x2) (n(1)*(x1-P0(1))+n(2)*(x2-P0(2)))/(-n(3))+P0(3);
[X,Y]=meshgrid(x,y);
surf(X,Y,Z(X,Y))
axis equal
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2012, 16:38     Titel:
  Antworten mit Zitat      
ich würde glaube ich versuchen eine art mittelpunkt der beiden punktwolken zu bestimmen. dann hast du ja den normalen vektor der eben.dann würde ich einfach die eben in die mitte zwischen diese beiden punkte setzen.

So habe ich es auch versucht zu machen Smile Wie gut. Aber leider ist meine Lösung nicht so schön wie deine und auch sehr langsam. Aber vielen dank dafür nochmal. Ist echt super von dir.

Aber ich habe doch noch ne kurze Frage, weil ich das einfach bisher nicht so oft benutzt habe. Was genau passiert hier:

Code:
funa=@(x) sum((x(1)-a1).^2+(x(2)-a2).^2+(x(3)-a3).^2);
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.03.2012, 17:41     Titel:
  Antworten mit Zitat      
das ist eine funktion die die summe der quadratischen abständer deiner punkte in der punktwolke zum punkt x ausgiebt.
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2012, 09:32     Titel:
  Antworten mit Zitat      
Hallo nochmal. Danke erstmal für deine unterstützung.

Aber ich habe noch ne Frage. Wie würdest du es denn machen, wenn die Punktwolken eine starke Streuung haben? Dann liegt die Ebene nicht unbedingt zwischen den beiden Punktwolken. Habe nämlich hier so ein Beispiel wo das nicht funktioniert
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.