Verfasst am: 12.10.2012, 22:49
Titel: Vektor bei Sliderposition kürzen
Ich möchte mittels der Slider Position einen vorhandenen Datenvektor kürzen.
Dazu habe ich 2 Slider und einen Button erstellt.
Die Werte der Slider habe ich gerundet und dann mittels "assignin()" im Workspace gespeichert.
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
In der Callbackfunktion des Buttons kürze ich den Datenvektor.
Code:
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(x1, x2, L_KnieAngle3D_orig, hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
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 ;)
Mit "guidata" übernimmt er scheinbar die Werte, speichert aber scheinbar nur den zuletz gespeicherten ab.
Es könnte auch daran liegen dass der handle ("hObject" genannt) zu beiden Slider gleich benannt ist.
Diese kann ich aber nicht umbenennen, den dann funktioniert der handle scheinbar nicht mehr.
Also wenn ich ihn z.B. einmal hObject1 und hObject2 nenne.
Hier mein Code für einen Slider (der 2. Slider verwendet x2 als Sliderposition):
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
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Nun sind die Inhalte von x1 und x2 identisch. Das ist wohl nicht so gewollt.
Schaue Dir doch nochmal die Hilfe-Texte für GUIDATA an. Du kannst auch einen Breakpoint in den Code setzen und betrachten, was GUIDATA genau zurückgibt.
"GUIDATA(Handle, Data)" speichert die Variable "Data" in der Figure, "Data=GUIDATA(Handle)" liest sie wieder. Änderungen in der Variable (oft wird sie "handles" genannt, aber das steht vollkommen frei) müssen zunächst gespeichert werden, damit sie in anderen Funktionen auch die aktuellen Werte haben.
Ja, du hast recht, die sollen nicht identisch sein.
Ich bin von den Begriffen "handle" und "handles" total verwirrt.
Wenn ich es richtig verstanden habe, ist ein "handle" eine Variable (ich nenn es mal so, weil man es ja beliebig benennen kann), die wo hin, in meinem Fall zum Slider, verweist.
"handles" ist, wie du geschrieben hast, eine beliebig von mir definierte Variable, in meinem Fall x1 und x2.
Also muss ich bei "GUIDATA(Handle, Data)" und "Data=GUIDATA(Handle)" für Handle=hObject eingeben um zur Callback-Funktion des Sliders zu kommen und für Data meine definiere Variable, also x1 und x2.
Jetzt habe ich nur das Problem, dass beide Slider mit dem "handle" "hObject" angesprochen werden.
Und wenn ich die zweite Variable=x2 mittels "GUIDATA(hObject,'x2')" speichern will, überschreibt diese die zuvor gespeicherte Variable=x1.
Ich habe probiert den "handle" für die beiden Slider, mit hObject1 und hObject2, anderes zu benennen um den zuvor gespeicherten nicht zu überschreiben.
Dann bekomme ich aber folgende Fehlermeldung.
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 ;)
Bitte denkt nicht, dass ich die MATLAB Hilfe nicht benütze. Meistens habe ich ein Thema mehrmals gelesen bevor ich hier was Poste.
Das Problem mit der MATLAB Hilfe ist nur, dass man als Anfänger zur Hilfe eine Hilfe benötigt.
Aus meiner Erfahrung ist die MATLAB Hilfe nur für Personen die sich mit MATLAB schon besser auskennen eine wirkliche Hilfe.
Aus meiner Erfahrung ist die MATLAB Hilfe nur für Personen die sich mit MATLAB schon besser auskennen eine wirkliche Hilfe.
Und genau deswegen gibt es ja dieses Forum und nicht ein statisches Popup-Window in dem "RTFM" steht - obwohl die Dokumentation wirklich 99% der Fragen lösen könnte.
Wir hatten nochmal auf die Hilfe hingewiesen, weil dort die Probleme explizit behandelt werden. Es ist also als Hinweis gemeint, dass das benötigte Detail doch dort zu finden ist. Es wäre weniger effizient (und würde zudem TMW's Copyright tangieren), wenn wir stattdessen die entsprechenden Abschnitte der Dokumentation direkt hier per Copy&Paste einfügen.
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
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.