|
|
In Surf Plot Gitterabschnitt anklicken und auslesen |
|
laze |

Forum-Fortgeschrittener
|
 |
Beiträge: 69
|
 |
|
 |
Anmeldedatum: 12.10.11
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 19.10.2012, 20:41
Titel: In Surf Plot Gitterabschnitt anklicken und auslesen
|
 |
Hallo zusammen,
ich stehe vor folgendem Problem, dass ich in einem Surf Plot in einen Abschnitt klicken und über die ButtonDownFcn mir den angeklickten Wert in einer Variablen ausgeben lassen will.
Nur leider weiss ich nicht, ob das in dieser Form überhaupt möglich ist.
Hat jemand eine Idee?
Ursprünglich wollte ich nach folgedem Video vorgehen nur leider funktioniert das nicht so ganz.
http://blogs.mathworks.com/pick/200.....ding-callbacks-to-a-plot/
Gruß laze
_________________
--Wannabe
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 19.10.2012, 23:47
Titel: Re: In Surf Plot Gitterabschnitt anklicken und auslesen
|
 |
Hallo laze,
Bitte erkläre bei Ausdrücken wie "funktioniert nicht so ganz" immer alle notwendigen Details. Was hast Du genau gemacht und welche Probleme traten auf?
Die Aufgabe ist nicht trivial, da eine 3D-Surface ja in den 2D-Bildschirm projiziert wird. Deshalb kann der Cursor ja beim Klicken mehrere hintereinanderliegende Punkt meinen. Wahrscheinlich ist natürlich der vorderste Punkt gemeint.
Gruß, Jan
|
|
|
laze |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 69
|
 |
|
 |
Anmeldedatum: 12.10.11
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 20.10.2012, 12:10
Titel:
|
 |
Danke für die schnelle Antwort
Dann werde ich mal konkreter
Wie bereits gesagt habe ich mich an dem Video orientiert.
Problematisch hierbei war das "einzeln" Plotten der Z-Daten. Man kann mit "surf" bekanntlich ja keine Scalare plotten. Zumindest sagt das die Fehlermeldung gleich beim ersten Ausführen der for Schleife.
D.h. ich kann nicht auf diese Weise herausfinden welchen Wert ich in dem Kennfeld angeklickt habe.
Tjo, soweit so gut.
Die ButtonDownFcn funktioniert auch soweit. Nur leider wird mir immer für [i,j] die höchsten Indices ausgegeben. Also immer den Dimensionen des Kennfelds entsprechend.
Nur möchte ich gerne, wenn ich eine 14x14 Matrix habe, beispielsweise den Wert bei [8,4] haben.
Danke
Gruß laze
_________________
--Wannabe
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 20.10.2012, 14:09
Titel:
|
 |
Hallo laze,
Ich habe das Video nicht gesehen. Falls das nötig ist, um die Frage zu verstehen, schlage ich vor die Frage neu zu formulieren, so dass man auch ohne Lektüre weiterer Filme eine Antwort finden kann,.
Zitat: |
Die ButtonDownFcn funktioniert auch soweit. Nur leider wird mir immer für [i,j] die höchsten Indices ausgegeben. |
Das verstehe ich nicht. Was ist "die ButtonDownFcn"? Funktioniert der gepostete Code nun oder nicht? Der Code durchläuft alle Elemente und gibt natürlich die Indices des letzen zurück. Weshalb sollte er ausgerechnet "den Wert bei [8,4]" antworten?
Ich verstehe also immer noch nicht, was Du genau möchtest, was Du bisher machst und welcher Fehler auftritt. Ich glaube sicher, dass Dir das Problem dagegen vollkommen klar ist und dass für Dich die bisherige Frage natürlich Hand und Fuß hat. Aber ohne diesen Kontext sind Aussagen wie diese rätselhaft: "Man kann mit "surf" bekanntlich ja keine Scalare plotten."
Gruß, Jan
|
|
|
laze |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 69
|
 |
|
 |
Anmeldedatum: 12.10.11
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 18:53
Titel:
|
 |
Ok ^^
Dann probier ich es einmal anders.
Folgendes Bild im Anhang zeigt ein von mir geplottetes surf-Kennfeld.
Über meine Routine wollte ich bei Klicken auf einen beliebigen Punkt in meinem Plot herausfinden, um welchen Wert es sich dabei handelt. Ich möchte also wissen welcher z-Wert aus
angeklickt wurde bzw. welcher dort in unmittelbarer Nähe liegt.
Wenn ich nun in dieses Kennfeld klicke, soll mein Programm das ja irgendwie registrieren. Deswegen die ButtonDownFcn.
Dadurch soll eine Funktion aufgerufen werden, in der ich eben herausfinden kann, um was für einen Datenpunkt es sich handelt.
Tja und da bin ich dann am Ende mit meinem Latein, weil ich nicht weiss, wie ich das bewerkstelligen könnte.
Ich hoffe, dass diesmal deutlicher zum Vorschein kommt, was mein Problem ist. Vielleicht hat ja jemand eine Idee.
Gruß laze
Beschreibung: |
|
 Download |
Dateiname: |
Kennfeld.jpg |
Dateigröße: |
70.51 KB |
Heruntergeladen: |
528 mal |
_________________
--Wannabe
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 22:36
Titel:
|
 |
|
 |
|
Hallo laze,
Ich kenne keine fertige Lösung dafür.
Das SURF-Objekt enthält Vierecke, die nicht planar sein müssen.
Beim Klick auf das SURF-Objekt (ButtonDownFcn) wird der CurrentPoint des AXES-Objects gesetzt als [2 x 3] Matrix. Dies enthält die Sichtlinie durch den angeklickten Punkt.
Also kannst Du zunächst die Koordinaten des SURF-Objektes verwenden, um eine Triangulisierung zu erhalten, also die Fläche in Dreiecke zu zerlegen. Dann muss beim Klich nur noch getestet werden, welches Dreieck von der Sichtlinie durchstoßen wird.
Nun hört sich das aber wirklich nach einem Standardproblem an. Dafür findet man doch eigentlich immer etwas in im FileExchange. Ich find aber nur z.B. http://www.mathworks.com/matlabcent.....-triangleray-intersection, http://www.mathworks.com/matlabcent.....-raytriangle-intersection. Bei der Triangularisierung könnte www.mathworks.com/matlabcentral/fil.....rf2stl/content/surf2stl.m behilflich sein.
Vielleicht kennt jemand anderes aber eine bereits implementierte Lösung...
Gruß, Jan
|
|
|
|
|
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.
|
|