|
|
Codeausführung in falscher Reihenfolge? |
|
sword_warrior |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 04.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.01.2011, 17:28
Titel: Codeausführung in falscher Reihenfolge?
|
 |
|
 |
|
Hallo zusammen
ich habe bei meinen Matlab programmen seit einiger Zeit das Problem, dass Matlab den Code nicht Schritt für Schritt abarbeitet, sondern das Ausführen gewisser Zeilen verzögert bis ich das nächste mal pause(0.1) ausführe...
Hier ein einfaches Beispiel:
Hier führt mir Matlab folgende Reihenfolge aus:
1. figure 1 plotten
2. im Hauptfenster 10 sekunden lang 1 anzeigen
3. figure 2 plotten
Sprich die Ausführung der figure 2 wird hinter die while-schleife gestellt...
Wenn ich jedoch die while-Schleife im obigen Beispiel ersetze durch
erscheint die figure 2 direkt nach der figure 1 (wie es sein sollte).
Das Problem tritt bei mir nicht nur bei plot auf, in gewissen Scripten wird z.B. die Funktion einer ActiveX DLL erst bei der nächsten pause ausgeführt. Dies führt natürlich zu fatalen Logikfehler im Script.
Das Problem habe ich auf zwei Computern bei uns festgestellt. Beide Computer laufen auf Windows XP, einer ist mit Matlab R2010a und einer mit Matlab R2008a ausgestattet. Der PC mit der R2010a Version hat eine parallel Computing toolbox, und beide Computer haben eine Instrument Control toolbox installiert.
Ist dieses ein bekanntes Problem, resp. gibt es irgendwelche Lösungen dafür?
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.01.2011, 17:32
Titel:
|
 |
Hallo,
wenn eine Figure zu einem bestimmten Zeitpunkt aktualisiert werden soll, hilft
Grüße,
Harald
|
|
|
sword_warrior |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 04.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.01.2011, 17:41
Titel:
|
 |
Das mit dem Plot ist nur ein Beispiel. Wie gesagt, das gleiche Phänomen tritt auch bei anderen Szenarien auf (dass er eine activeX dll oder einen Funktionsaufruf erst bei der nächsten Pause ausführt). Deshalb hilft mir das drawnow nicht wirklich weiter.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.01.2011, 19:04
Titel:
|
 |
Hallo,
da weiß ich auch nicht weiter. Wenn sich niemand meldet, kannst du's mal beim Support von Mathworks versuchen.
Grüße,
Harald
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 04.01.2011, 21:53
Titel:
|
 |
Hallo
Die Code wird schon nacheinander abgearbeitet.
Bei Graphischen Objekten ist es so, dass sie extra Zeit benötigen, um gezeichnet zu werden. Da der Code sehr schnell abgearbeitet wird, werden Graphiken oft erst am Ende der Ausführung gezeichnet oder aktualisiert. PAUSE oder DRAWNOW halten die Ausführung der Code an und geben dann die nötige Zeit um Graphiken zu zeichnen oder zu aktualisieren.
Dass im ersten Fall, FIGURE 1 gezeichnet wird liegt einfach an FIGURE Befehl
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.01.2011, 01:02
Titel:
|
 |
Hallo sword_warrior,
DRAWNOW führt nicht nur dazu, dass alle Grafik-Ausgaben abgeschlossen werden. Die gesamte Event-Queue wird abgearbeitet. Dazu gehören auch Mouse, Windows und Keyboard Events, die warten müssen, solange Matlab sehr beschäftigt ist. Ctrl-C wird z.B. in einigen Programmen nur dann abgefragt, wenn ein DRAWNOW dazu Zeit läßt.
PAUSE macht übrigens das gleiche, nutzt die Zeit also sinnvoller aus, als der Name vermuten läßt.
Deshalb vermute auch ich, dass DRAWNOW Dir helfen könnte. Eine magische Umsortierung von Befehlen finden jedenfalls nicht statt, und wäre technisch auch gar nicht möglich.
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|