Data Cursor - Mein MATLAB Forum - goMatlab.de
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

Data Cursor

 

Janne

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2010, 08:46     Titel: Data Cursor
  Antworten mit Zitat      
Ich brauche eure Hilfe,

gibt es eine möglichkeit beim Data Cursor gleichzeitig noch Linien im Bild anzeigen zu lassen?

Nochmal genauer: Ich möchte, wenn ich den Data Cursor bei meiner GUI aufrufe:
ein Kreuz, bzw eine horizontale oder vertikale Linie vom Data Cursor ausgehen sehen können...

Vielen Dank vorab für eure Hilfe!


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2010, 13:29     Titel:
  Antworten mit Zitat      
Hallo,

Du kannst Dir eine eigene data cursor Funktion schreiben und daran auch Linien zeichnen. myCallback ist ein Beispiel für eine eigene data cursor Funktion. Du kannst die Funktion manuell auswählen, indem Du auf einen data cursor Punkt mit rechts klickst -> Select Text Update Function.

Oder Du setzt die Funktion gleich beim Erzeugen des Fensters:
Code:

f = figure('CreateFcn',@myxdatacursor);
plot([1,4,2,5,0,2])
 


Hier der Beispielcode:
Code:

function myxdatacursor(src,~)
hdt = datacursormode(src);  % source: handle to figure
set(hdt,'UpdateFcn',@myCallback);

function output_txt = myCallback(~,event_obj)
% Display the position of the data cursor
% obj          Currently not used (empty)
% event_obj    Handle to event object
% output_txt   Data cursor text string (string or cell array of strings).
persistent l;
if ~isempty(l)
    delete(l)
end
pos = get(event_obj,'Position');
output_txt = {['X: ',num2str(pos(1),4)],...
    ['Y: ',num2str(pos(2),4)]};


line_handle = get(event_obj,'Target');
axes_handle = get(line_handle,'Parent');

l(1) = line([pos(1)-1,pos(1)+1],[pos(2),pos(2)],'Parent',axes_handle);
l(2) = line([pos(1),pos(1)],[pos(2)-1,pos(2)+1],'Parent',axes_handle);

% If there is a Z-coordinate in the position, display it as well
if length(pos) > 2
    output_txt{end+1} = ['Z: ',num2str(pos(3),4)];
end
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Janne

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2010, 13:26     Titel:
  Antworten mit Zitat      
So in etwa habe ich mein Programm geschrieben, aber das mit der 'UpdateFcn' hab ich noch nicht gewusst! Danke!
 
MJET

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2011, 10:13     Titel: :
  Antworten mit Zitat      
Großer Dank LittleX,

ich hatte ein sehr ähnliches Problem und ohne diesen Foreneintrag hätte ich wahrscheinlich noch ein paar Stunden nach einer Lösung gesucht.

mfg Martin
 
ka404
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 29.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2013, 11:19     Titel:
  Antworten mit Zitat      
Hallo LittleX,

kannst du mir eventuell deinen Code einmal kommentieren? verstehe noch nicht genau was wann passiert. Ich hab ein programm und würde auch gern eine senkrechte Linie haben die man verschieben kann. Aber wenn es geht keine waagerechte Linie. Wo wird diese erzeugt in welcher Zeile?

Weiterhin wird ja in diesem Code ein figure geöffnet also ein Fenster mit Koordinatensystem. ICh würde es nun gern auf mein Programm beziehen deshalb darf das Fenster nicht geöffnet werden sondern die Linie so in meinem erstellten axes sein.

Kannst du mir weiterhelfen?
Vielen Dank im voraus

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 17.09.2013, 11:47     Titel:
  Antworten mit Zitat      
Hallo ka404,

der Thread hier ist über 2 Jahre alt! Vielleicht ist es sinnvoller einen neuen Thread aufzumachen, mit einer ordentlichen Problembeschreibung und einem Verweis zu diesem Thread.

Zu deiner Frage, die Linien werden in den folgenden zwei Zeilen gezeichnet:

Code:
l(1) = line([pos(1)-1,pos(1)+1],[pos(2),pos(2)],'Parent',axes_handle);
l(2) = line([pos(1),pos(1)],[pos(2)-1,pos(2)+1],'Parent',axes_handle);


pos(1) beinhaltet die x-Koordinate, pos(2) die y-Koordinate.

und natürlich öffnet der Code ein figure, da ja "figure" aufgerufen wird, jedoch mit dem Zusatz der CallbackFunction.

Grüße
Chris
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 - 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.