erstmal möcht ich euch zu diesem tollen Forum beglückwünschen, es hat mir schon oft geholfen.
Ich hoffe ihr könnt mir auch diesmal helfen.
Ich habe ein GUI erstellt bei dem durch drücken auf einen Button Ergebnisse erzeugt werden. Die Ergebnisse will ich in einem axes angezeigt bekommen. Durch Callback-functions können verschiedene Kurven angezeigt bzw. durch betätigen wieder aus dem axes entfernt werden. Mein Problem ist jetzt das ich durch Änderung der Parameter und erneutes drücken des Button neue Ergebnisse erzeuge diese aber nicht automatisch im axes aktualisiert werden. Meine Frage ist jetzt ob es da eine Möglichkeit für gibt. Um besser zu zeigen was ich meine hier der Code:
das funktioniert soweit ganz gut das Problem ist einfach das ich möchte, dass aktive plots bei Ausführung der Button-function und veränderten Ergebnissen aktualisiert werden. Ich hoffe ihr könnt mir helfen, da ich es absolut nicht hinbekomme.
Generell sorgt DRAWNOW für die Aktualisierung von Plots - ist das was gesucht war?
Andreas
Gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.10.2009, 09:01
Titel:
Danke für die schnelle Antwort.
Drawnow geht in die richtige Richtung. Könntest du mir ein Beispiel geben wie ich es anwenden muss?
Drawnow muss doch sicher in die Button_Callback-function oder?
Die Frage ist aber wie der Aufruf dann aussehen müsste und was ich aufrufe. Oder gibt es eine bessere Lösung für mein Problem. Zum Beispiel ohne checkbox_callback die entsprechende Kurve die man möchte aktivieren und wieder deaktivieren zu können.
Könntest du mir ein Beispiel geben wie ich es anwenden muss?
Entweder nach dem letzten grafischen Befehl oder am Ende des Callbacks.
Wird ohne jegliche Parameter aufgerufen.
MfG
Gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.10.2009, 09:45
Titel:
Das Problem dabei ist, dass bei Button_callback nur die Werte an die checkbox_Callback-functions übergeben wird und dort geplottet wird. D.h. die Werte aktualisieren sich nur wenn die checkbox_callback-function ausgeführt wird (checkbox aktiviert/ deaktiviert ). Es soll sich aber auch aktualisieren wenn ich die checkbox_Callback-function nicht ausführe das soll heißen diese automatisch aktualisiert wird.
dann füge den DRAWNOW sowohl bei dem Button_Callback, als auch im Checkbox_Callback... Dadurch wird der Quellcode nicht schwerer...
MfG
Gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.10.2009, 10:30
Titel:
Das bringt leider garnicht, da in die checkbock_callback-function nur bei "Häckchen setzten, rücksetzen" gesprungen wird. Hab jetzt versucht den plot in der button-function durchzuführen und hab den plot Graph unsichtbar gemacht und an die checkbox_callback-function übergeben, das problem ist nur ich bekomm ihn nicht mehr sichtbar da dann die Fehlermeldung "Invalid handle object" kommt.
Ich habe nun den Thread von Anfang an gelesen und finde das der Workflow deines Codes nicht in Ordnung ist.
Wenn ich alles richtig verstanden habe, hast Du einen Knopf und eine Checkbox. Mit der Checkbox wird ein bestimmten Plot ein/ausgeschaltet (durch die visibility). Es scheint für mich, als ob die Daten auch aus dem Checkbox-Callback geplottet/aktualisiert werden. Ich würde das anders lösen und zwar:
% überprüfen, ob der Plot exisitiert ifishandle(handles.plot_handle) % plot aktualisieren set(plot_handle,'xdata',<neue_ X-Daten>,'ydata',<neue_ Y-Daten>) else % erster aufruf - den Plot gibt es noch gar nicht
handles.plot_handle = plot(handles.axes,xdata,ydata,...) % nächste Zeile ist wichtig, damit plot_handle in der handles erhalten bleibt. guidata(hObject,handles) % Nun die Checkbox abfragen ob die gesetzt ist oder nicht % und entsprechend die Visibility setzen ifget(handles.checkbox1,'value') set(handles.plot_handle,'visible','on') else set(handles.plot_handle,'visible','off') end end % und nun drawnow % das wars - es wird kein weiterer Callback mehr aufgerufen
function checkbox_callback(hObject,eventdata,handles) ifget(handles.checkbox1,'value') set(handles.plot_handle,'visibility','on') else set(handles.plot_handle,'visibility','off') end
Vielen Dank jetzt funktioniert es so wie ich es gern haben wollt.
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.