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

Automatisches Schließen einer Figure mit tic,toc oder Timer

 

Flowerbird

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 11:09     Titel: Automatisches Schließen einer Figure mit tic,toc oder Timer
  Antworten mit Zitat      
Hallo zusammen,

ich möchte meine erstellte Figure automatisch nach Ablauf einer bestimmten Zeit schließen lassen bzw. eine neue Figure öffnen lassen.

Ist hierfür tic bzw. toc oder eine Timer-Funktion sinnvoll???

Nur zum besseren Verständnis. Im Moment doktor ich hier bei rum:

Code:


Keine Fehlermeldung und keine Reaktion von Matlab. Bekomm schon ein Gehirnknoten mehr. Bitte um Hilfe... Shocked

Flowerbird


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.10.2010, 12:00     Titel: Re: Automatisches Schließen einer Figure mit tic,toc oder T
  Antworten mit Zitat      
Hallo Flowerbird,

Zitat:
Code:

Das enhält gleich mehrere Fehler:

1. Wahrscheinlich meinst Du "if toc == 1", oder?

2. Die IF-Abfrage wird direkt nach dem "tic" aufgerufen, also wird bestimmt noch keine Sekund vergangen sein. Wenn der Ausdruck der IF-Abfrage logisch falsch ist (also "toc~=1"), springt Matlab sofort hinter das dazugehörige "end". Matlab wartet also nicht in die IF-Abfrage!

3. Eine WHILE-Schleife würde dagegen schon so oft wiederholt werden, bis die Bedingung erfüllt ist. Aber "toc == 1" bedeutet:
"toc == 1.000000000000000" ! Das wäre doch sehr unwahrscheinlich, dass 100% genau diese Zait vergangen ist, während Matlab so vor sich hin rechnet. Viel sicherer wäre also "while toc <= 1.0".
Eine WHILE-Schleife würde aber solange den Computer auslasten, bis die Bedingung erfüllt ist. Nicht gerade energiesparend...
PAUSE würde dagegen dem Prozessor eine ganz friedliche Pause gönnen, oder anderen Threads wie dem Virenscanner Zeit gewähren.

4. "close Figure 1" ist gleichbedeutend mit:
Code:
close('figure', '1');

Das funktioniert zwar, aber mir ist überhaupt nicht klar, weshalb! Der HELP Text von CLOSE klärt das nicht - zumindest nicht bis Matlab 2009a.
Eigentlich benötigt CLOSE entweder den Namen der Figure oder besser noch den Handle.

Lösung: Wenn das Matlab-Programm warten soll, bis das Fenster nach einer Sekunde geschlossen wird, wäre PAUSE(1) die richtige Wahl. Wenn aber Matlab weiter rechnen soll und das Fenster unabhängig vom Programm-Ablauf geschlossen werden soll, ist ein Timer wie vermutet viel besser:
Code:

FigH = figure;
timer('TimerFcn', {@myFigCloser, FigH}, ...
   'ExecutionMode', 'singleShot', ...
   'StartDelay', 300);

% --------------------- 8< ---------------------
function myFigCloser(TimerH, EventData, FigH)
  stop(TimerH);
  delete(TimerH);
  if ishandle(FigH)  % Not closed manually before
    delete(FigH);
  end
return;
 

Ich bin mir gerade nicht sicher, ob das Timer-Objekt sich selbst stoppen und löschen sollte. Aber es funktioniert auf alle Fälle.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Flowerbird

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 14:06     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für die super fixe Antwort.

Irgendwie ist mir das System nicht klar. Ich möchte mehrere random Matrizen in einem bestimmten zeitlichen Abstand übereinander darstellen (so ne Art Powerpoint -Präsentation). Hierbei spielt die Zeit eine entscheidene Rolle (wäre im Millisekunden-Bereich)!

Die close('figure','1') Anweisung war somit nur ein Test, ob dies mit Hilfe der tic/tac oder timer Befehlen realisierbar ist.

Kannst du mir einen Hinweis geben, unter welchen Matlab-Befehlen ich mir das Wissen diesbezüglich aneignen kann??

Vielen Dank
Kathleen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.10.2010, 14:37     Titel:
  Antworten mit Zitat      
Hallo Kathleen,

Zitat:
Irgendwie ist mir das System nicht klar. Ich möchte mehrere random Matrizen in einem bestimmten zeitlichen Abstand übereinander darstellen (so ne Art Powerpoint -Präsentation). Hierbei spielt die Zeit eine entscheidene Rolle (wäre im Millisekunden-Bereich)!


Millisekunden dürfte ein ernstes Problem sein: Mein 60Hz LCD-Monitor gibt nur alle 0.01667 sec ein Bild aus! Ich kenne auch keine Lebensform, die Bilder innerhalb eine Millisekunde wahrnehmen kann.

Matrizen in einem bestimmten Zeitabstand anzeigen zu lassen klingt eigentlich nach "Film". Ein AVI, MPEG oder WMV könnte da besser sein als Matlab.

Hilfreiche Befehle könnten sein: MOVIE, GETFRAME, AVIFILE, PAUSE, TIMER, NOW, ...
Wenn Du wirklich Matrizen darstellen möchtest, ist es im Allgemeinen schneller nur ein IMAGE-Objekt zu erzeugen und danach nur noch die CData des Objekts zu ersetzen. Das Darstellen großer Matrizen kann aber auch weit oberhalb einer Millisekunde dauern!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Flowerbird

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 14:51     Titel:
  Antworten mit Zitat      
Hallo Jan,

dann werde ich meine Abbildungen mit Matlab herstellen und sie in einem geeigneten Programm aufrufen lassen.

Vielen Dank für deine Hilfe
Kathleen
 
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.