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

UIAxes: Kurvenpunkt mit kleinsten Abstand zu Mausklickwerten

 

matlabel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 28.01.16
Wohnort: ---
Version: 2020a
     Beitrag Verfasst am: 17.12.2021, 09:39     Titel: UIAxes: Kurvenpunkt mit kleinsten Abstand zu Mausklickwerten
  Antworten mit Zitat      
Hallo,
ich habe ein app.UIAxes-Objekt mit Punkten (x,fx), deren Werte ich über app.UIAxes.UserData auslesen kann. Nun will ich beim Mausklick auf den Graphen die Nummer des nächstgelegenen Kurvenpunktes herausbekommen. Dazu habe ich ein Callback auf das UIAxes-Objekt erzeugt.
Code:

function BtnDown_call(app, event)
   MouseX = app.UIAxes.CurrentPoint(1,1);
   MouseY= app.UIAxes.CurrentPoint(1,2);
   a=app.UIAxes.UserData;
   x=a(1,:);
   fx=a(2,:);
   d=(x-MouseX).^2+(fx-MouseY).^2;
   [ymin,xmin]=min(d);
   xmin
end
 

Im Ergebnis wird mit xmin fast (!) immer der richtige Index des nächstgelegenen Kurvenpunktes angezeigt.Nur wenn der Mausklick praktisch auf dem geplotteten Graphen liegt, passiert nichts. Woran liegt das und wie beseitigt man das ggfs?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.425
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.12.2021, 10:26     Titel:
  Antworten mit Zitat      
Hallo,

meine Vermutung wäre, dass es auch einen Callback für den Graphen gibt, der gegenüber dem Callback für das Axes Vorrang hat. Dann müsste man den Callback für den Graphen auch auf BtnDown_call setzen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 28.01.16
Wohnort: ---
Version: 2020a
     Beitrag Verfasst am: 17.12.2021, 15:44     Titel: call-Back für Graphen
  Antworten mit Zitat      
Hallo Harald,
so scheint das nicht zu funktionieren. Wenn man nämlich beim Plotten des Graphen an passender Stelle den Callback einfügt

Code:

plot(app.UIAxes,x,f,'ButtonDownFcn',@BtnDown_call);
 


ergibt sich beim Anklicken des Graphen die Fehlermeldung
Undefined function 'BtnDown_call' for input arguments of type 'matlab.graphics.chart.primitive.Line'.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das Problem scheint mir erst mal nicht der Vorschlag, sondern die Umsetzung.
BtnDown_call braucht als erstes Argument die App, der Callback des Graphen hat üblicherweise zwei Eingabeargumente mit anderer Bedeutung. Ich würde es so versuchen:
Code:
plot(app.UIAxes,x,f,'ButtonDownFcn',@(src, evt) BtnDown_call(app, []));


Um Vorschläge direkt ausprobieren zu können, wäre ein reproduzierbares Beispiel, in dem das Problem auftritt, hilfreich.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 28.01.16
Wohnort: ---
Version: 2020a
     Beitrag Verfasst am: 18.12.2021, 17:41     Titel: funktioniert
  Antworten mit Zitat      
Danke, Harald, genau so klappt es.
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.