Verfasst am: 15.09.2012, 10:41
Titel: Im Plot, Daten per Schieberegler auswählen?
Hallo Community
Ich möchte Daten eines Vektors eingrenzen, indem ich einen Schieberegler in einem Diagramm (Darstellung einer Funktionskurve) an die benötigte Anfangstelle und die Endstelle führe.
Die dazwischen liegenden Werte sollen dann für die weitere Verarbeitung verwendet werden.
ich würde zwei Schieberegler nehmen, einen für Anfang und einen für Ende.
Sprich, eine GUI mit einem Koordinatensystem und zwei Schiebereglern. In den Callbacks musst du nur noch bestimmen, wie der Fokus verschoben werden soll. Dabei kann XLIM nützlich sein.
Hab mir jetzt einige Tutorials angesehen und viel probiert aber ich schaffe nicht...
Ich will folgendermaßen vorgehen.
1. Den beiden Schiebereglern als Minimal- und Maximalwert die des jeweiligen Vektor zuweisen.
2.Zwei Marker erstellen, die sich dann mit dem Wert des jeweiligen Schiebereglers entlang der Kurve verschieben.
3.Einen Button einbauen, bei dessen Betätigung die Werte zwischen den Markern als neue Vektoren Werte übernommen werden.
Es scheitert leider schon bei Punkt 1.......
Zu Punkt 1.:
Ich habe die Minimal und Maximal Werte des Vektors dem Slider zugewiesen.
Code:
% --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider
Bei bewegen des Sliders erhalte ich die Fehlermeldung:
"Warning: slider control can not have a Value outside of Min/Max range
Control will not be rendered until all of its parameter values are valid
Warning: slider control can not have a Value outside of Min/Max range
Control will not be rendered until all of its parameter values are valid
Warning: slider control can not have a Value outside of Min/Max range
Control will not be rendered until all of its parameter values are valid"
Ich weiß auch warum, der Startwert des Sliders ist Standartmäßig bei 0, der Minimalwert des Datenvektors aber bei 1.
Wie kann ich dem Slider als Startwert, den Minimalwert des Datenvektors zuweisen?
Zu Punkt 2.:
Ich habe einen Marker erstellt, der mit dem Slider mit wandern soll.
In x-Richtung funktioniert das, wie kann ich ihm die Messdaten aus dem Vektor als y-werte zuweisen?
Außerdem wird der Marker an jeder Stelle gezeichnet, beim Verschieben des Sliders habe ich dadurch mehrere Markierungen. Wie kann ich den alten Marker löschen und nur den neuen behalten?
Zum zweiten Problem: Du kanbnst den Handle des Line-Objekts speichern (siehe: doc guidata) und nur dessen XData und YData neu setzen - such mal nach diesen Ausdrücken im Forum.
Können wir schon wissen, welchen Y-Wert Du haben möchtest?
Zu den y-Werten:
Ja, die y-Werte des "line" Objektes, sollen ja die eigentlichen Messdaten sein, die x-Werte (also die Slider Werte)sind ja nur die Indexierung der y-Werte.
Ich habe nur keine Vorstellung wie ich die y-Werte passend zu den x-Werten einlesen kann, deshalb die ???.
Ich habe guidata probiert, aber scheinbar mache ich was falsch. Es werden immer noch alle Elemente angezeigt.
Code:
x=get(hObject,'value')
y=2 %2 ist nur ein Platzhalter da ich nicht weiß wie ich die Werte reinkrieg!
line(x,y,'linestyle','none','marker','o','markeredgecolor','r');
guidata(line,x);
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
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.