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

GUI während einer Ausgabe stoppen

 

Sandro
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.02.11
Wohnort: Düsseldorf
Version: R2009a
     Beitrag Verfasst am: 14.10.2011, 09:32     Titel: GUI während einer Ausgabe stoppen
  Antworten mit Zitat      
Hallo zusammen,

ich habe eine Gui geschrieben, die über das Runge-Kutta-Verfahren die Differentialgleichung eines Mathematischen Pendels auswertet und durch eine for-Schleife die Ergebnisse in ein Axes Plotet. Dabei nutze ich die synthax

Code:


Dadurch sieht es so aus als Schwinge das Pendel. Gleichzeitig plote ich auf ein anderen Axes den Winkelverlauf.

Hat jemand eine idee, während dieser for-Schleife das Programm zu unterbrechen und in die Ausgangssituation zu versetzen. Sprich alle Axes Blanko. Ohne die Gui zu schließen und neu zuladen.

Die for-Schleife wird durch ein Pushbottom gestartet.

beste grüße

Sandro
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.10.2011, 11:12     Titel: Re: GUI während einer Ausgabe stoppen
  Antworten mit Zitat      
Hallo Sandro,

Zitat:
Die for-Schleife wird durch ein Pushbottom gestartet.

Dann nimm doch einen Toggle-Button und frage den Wert während der Schleife ab. Wenn der Button also wieder abgeschaltet wird, räumt Dein programm die AXES wieder auf und stoppt die Schleife mit einem BREAK.
Das würde der Start/Stop-Taste von Muski-Playern gleichen, wäre also irgendwie griffig.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sandro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.02.11
Wohnort: Düsseldorf
Version: R2009a
     Beitrag Verfasst am: 14.10.2011, 15:06     Titel:
  Antworten mit Zitat      
Hallo Jan,

man kann sich das leben so schwer machen Very Happy
Danke, so einfach kann das sein

Eine Lösung falls jemand das gleiche Problem hat Wink

Code:

for i= 1: n+1
           g=get(hObject,'Value');
           
          if(g==1)   %Wenn toggle Button gedrückt, dann plotten
           
          %Ploten
             
            h=plot(handles.axes1,x1,y1,'-b',0,0,'ob'); %Pendel bewegung
            hold on;
            plot(handles.axes2,t(i),z1(i)*(180/pi),'-b'); %Winkelverlauf

         else
             cla(handles.axes2,'reset') %Bei erneut drücken des toggleButton (Value=0) wird
                                                   %der Winkelverlauf gelöscht
              break;                       %Schleife stopt
          end
       end
 



Jan, also ich bekomm mein Axes2 resetet. Aber rein aus neugier, gibt es eine Möglichkeit mit der set(handles.axes2,'NextPlot',...)-Synthax im PropertyInspector nicht nur Werte zu ändern, sondern auch wie in diesem Fall "Wörter"? Man hat beim 'NextPlot' folgende außwahl: new,add,replace,replacechildren.

Vielen vielen Dank

Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.10.2011, 16:17     Titel:
  Antworten mit Zitat      
Hallo Sandro,

Zitat:
gibt es eine Möglichkeit mit der set(handles.axes2,'NextPlot',...) -Syntax im Property-Inspector nicht nur Werte zu ändern, sondern auch wie in diesem Fall "Wörter"? Man hat beim 'NextPlot' folgende Auswahl: new,add,replace,replacechildren.

Das verstehe ich nicht. Was genau möchtest Du ändern? Die Schlüsselwörter, die für "NextPlot" akzeptiert werden?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sandro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.02.11
Wohnort: Düsseldorf
Version: R2009a
     Beitrag Verfasst am: 14.10.2011, 19:47     Titel:
  Antworten mit Zitat      
Hallo Jan,

sorry. Ich frag mal anders.

ich will über ein Befehl die Properties eines Axes verändern, z.B. Axes2 soll jeden punkt speichern. Das wäre so als ob ich "hold on;" im programm stehen hätte.

Manuel öffne ich durch >>guide die figure des GUI. Öffne den PropertyInspector der jeweiligen Axes. Und ändere die Eigenschaft "NextPlot" von 'new' auf 'add'.

Da ich dieses Programm für eine Lehrveranstaltung schreibe, möchte ich das die Studenten nur das Startfenster bedienen.

Diese Einstellung geht jedoch dadurch verloren wenn ich die Axes clear mit "cla".
Wie gesagt, jetzt könnte ich "hold on;" verwenden. Aber wenn es die andere Methode gibt, per quellcode diese Eigenschaft wieder zu ändern, dann kann ich Sie auch für andere Zwecke verwenden und mein Programm insgesamt besser Verknüpfen.


oh man, ich und erklären Shocked


Danke, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.10.2011, 20:53     Titel:
  Antworten mit Zitat      
Hallo Sandro,

Statt CLA kannst Du verwenden:
Code:
delete(get(AxesHandle, 'Children'))

Statt "hold on" kannst Du auch manuell setzen:
Code:
set(AxesHandle, 'NextPlot', 'add')

Hilft das weiter?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sandro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.02.11
Wohnort: Düsseldorf
Version: R2009a
     Beitrag Verfasst am: 15.10.2011, 00:54     Titel:
  Antworten mit Zitat      
Yessssss!!!! Optimal!!!

Den Ersatz für die "hold on;" variante hatte ich fast. Hätte ich die ' ' nicht vergessen. Ist ja keine variable.

Der folgende Code erfüllt genau seinen zweck. Aber richtig verstehen tu ich Ihn nicht. Was passiert genau? Was ist mit 'children' gemeint? Aus dem PropertyInspector kenne ich nur 'replacechildren'.

Code:
delete(get(AxesHandle, 'Children'))
 



Super,

vielen vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.10.2011, 11:10     Titel:
  Antworten mit Zitat      
Hallo,

'children' sind die Objekte, die einem anderen Objekt zugeordnet sind. Für ein Koordinatensystem (gca ist das momentane Koordinatensystem) sind das z.B. sämtliche darin enthaltenen Linien, Oberflächen etc.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Sandro
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.02.11
Wohnort: Düsseldorf
Version: R2009a
     Beitrag Verfasst am: 15.10.2011, 12:58     Titel:
  Antworten mit Zitat      
ok, verstanden Surprised

Danke

Beste Grüße

Sandro
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.