Verfasst am: 15.01.2016, 14:59
Titel: 2x figure, einmal sichtbar, einmal nicht.
Hallo zusammen,
ich benötige mal wieder Hilfe,
ich habe einen Code, in dem nacheinander erst ein plot erstellt wird, der angezeigt werden soll und anschließend ein Film erstellt wird, bei dem der plot nicht dargestellt werden soll, um die Geschwindigkeit der Schleife zu erhöhen und außerdem muss der plot nicht angezeigt werden, da die Schleife etwa 3000 Durchgänge hat und damit 3000 plots angezeigt werden würden.
Leider schaffe ich es nicht, dass der erste plot angezeigt wird und angezeigt bleibt und danach der Film erstellt wird. Folgend ist mein Ansatz:
Der plot ändert sich in jeder Instanz der for-Schleife und jeder plot wird als movie frame gespeichert. Daher der 3000-malige plot.
Zu deinem Lösungsversuch:
Das hatte ich auch schon versucht. Leider funktioniert das nicht. Es werden dabei zwar keine 3000 Fenster geöffnet, aber trotzdem 3000 plots dargestellt, nacheinander im gleichen Fenster.
Wenn ich innerhalb der for-Schleife ausblende wird immerhin nur die erste for-Instanz dargestellt. Das ist aber einerseits auch unerwünscht. Andererseits verstehe ich das aber auch Code-seitig nicht, dass diese erste Instanz geplottet wird.
danke für die Hilfe. Google habe ich zur Genüge bemüht. Leider ohne Erfolg. Auch dein Tipp bringt nicht das, was ich möchte. Mit deinem Code, wird figure 1 kurz dargestellt und danach von figure 2 überschireben, die dann 30 mal nacheinander dargestellt wird. figure 1 soll aber angezeigt bleiben während figure 2 garnicht angezeigt wird, sondern im Hintergrund für das abgreifen des Movie frames laufen soll.
das kann auch vom Release abhängen. Ich hatte gerade R2013b zur Hand, und da funktioniert es wie gewünscht. Ich kann nur empfehlen, das verwendete Release im Profil einzutragen.
Bei mir funktioniert es mit R2014b auch nicht wie gewünscht. Ich erhalte zusätzlich noch folgende Warnings:
Zitat:
Warning: The undocumented 'hardcopy' function will be removed in a future release of MATLAB; use the documented 'print' command instead.
> In C:\Program Files\MATLAB\R2014b\toolbox\matlab\graphics\hardcopy.p>hardcopy at 39
In untitled2 at 17
Warning: Zbuffer is not supported for printing, using OpenGL instead.
> In graphics\private\inputcheck at 237
In print at 156
In C:\Program Files\MATLAB\R2014b\toolbox\matlab\graphics\hardcopy.p>hardcopy at 62
In untitled2 at 17
Ich nutze R2015a und habe es auch mit R2016a ausprobiert. Bei beiden VErsionen passiert das gleiche. Zum einen bekomme ich die Warnung
Zitat:
Warning: Zbuffer is not supported for printing, using OpenGL instead.
> In inputcheck (line 259)
In print (line 41)
In hardcopy
In Untitled2 (line 17)
.
Zum anderen erhalte ich wie gesagt 30x die figure 2 auf dem Bildschirm und figure 1 wird überschrieben. Es muss doch eine Möglichkeit geben, in einer for Schleife die Ausgabe der figure zu unterdrücken ohne gleichzeitig eine andere figure ausserhalb der for Schleife zu beeinflussen.
B = rand(30,30);
hfig = figure(2);
hline = plot(B(:,1));
set(hfig,'Visible', 'off','nextplot','replace')% sollte eigentlich auch ohne nextplot arg gehen
Unter Win7/64, Matlab R2015b läuft das gut.
Mit
get(groot, 'MonitorPositions')
kann man herausfinden, ob der User vielleicht 3 Monitore verwendet, so dass bei X=5000 doch noch ein sichtbarer Bereich ist.
Das dürfe dann aber am Rechenbedarf für den Prozessor/Grafikprozessor nix ändern oder? Die Ausgabe wird ja trotzdem erstellt, nur halt irgendwo im Nirwana. Stimmt das?
Ich setze die for-Schleife mit Videoerstellung einfach vor den plot, der sichtbar sein soll. Anstatt danach. Also einfach umdrehen.
Dann klappt alles so wie ich will.
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.