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

axes aktualisieren

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 08:32     Titel: axes aktualisieren
  Antworten mit Zitat      
Hallo

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:

Code:


function button_callback()

% Berechnungen
% Wertübergabe an checkbox_callback function

function checkbox_callback()
% aktivieren bzw. deaktivieren der plots

 


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.

Vielen Dank schonmal im voraus.

Gruß


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 29.10.2009, 08:39     Titel:
  Antworten mit Zitat      
Generell sorgt DRAWNOW für die Aktualisierung von Plots - ist das was gesucht war?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 09:01     Titel:
  Antworten mit Zitat      
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.
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 29.10.2009, 09:19     Titel:
  Antworten mit Zitat      
Zitat:
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 09:45     Titel:
  Antworten mit Zitat      
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.
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 29.10.2009, 09:58     Titel:
  Antworten mit Zitat      
dann füge den DRAWNOW sowohl bei dem Button_Callback, als auch im Checkbox_Callback... Dadurch wird der Quellcode nicht schwerer... Smile


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 10:30     Titel:
  Antworten mit Zitat      
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.

Code:

function button_callback

h=plot(t,y)
set(h,'visible','off')
setappdata(0,'h',h)

function checkbox_callback
h=getappdata(0,'h')
set(h,'visible','on') % hier tritt Fehler auf

 


Die Übergabe klappt noch aber der Graph kann nicht sichtbar gemacht werden. Hat vllt jemand eine Erklärung dafür?

Gruß
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 29.10.2009, 11:05     Titel:
  Antworten mit Zitat      
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:

Code:
[function button_callback(hObject,eventdata,handles)

% Berechnungen
% ...
% ...
% ...

% überprüfen, ob der Plot exisitiert
if ishandle(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
   if get(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)
if get(handles.checkbox1,'value')
   set(handles.plot_handle,'visibility','on')
else
   set(handles.plot_handle,'visibility','off')
end



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 11:35     Titel:
  Antworten mit Zitat      
Vielen Dank jetzt funktioniert es so wie ich es gern haben wollt.
 
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.