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

Plots erstellen und speichern im Hintergrund

 

VladTepes
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2013, 12:52     Titel: Plots erstellen und speichern im Hintergrund
  Antworten mit Zitat      
Hallo Leute,

habe ein Skript welches mir viele Plots erstellt und diese als .fig abspeichert. Während des öffnens springen die neuen figures immer in den Vordergrund. Da das ganze recht lange dauert "blockiert" es mir den Desktop für die Zeit.

Wichtig ist eigentlich nur das abspeichern der figures. Mir wurde aber gesagt man kann nur abspeichern wenn diese auch "dargestellt". Also sowas wie
Code:
) geht nicht.

Ich möchte dass das Programm im Hintergrund arbeitet, also dass die figures beim öffnen nicht immer in den Vordergrund springen.

Eine mögliche Lösung ist
Code:
figure('Visible','off')

aber dann wird das figure auch so abgespeichert, was nicht Sinn der Sache ist.

Kennt ihr eine Möglichkeit ?

Viele Grüße
Vlad

Zuletzt bearbeitet von VladTepes am 27.02.2013, 13:27, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 27.02.2013, 12:56     Titel:
  Antworten mit Zitat      
schau dir mal den Befehl

Code:


an. Vielleicht hilft dieser dir weiter
Private Nachricht senden Benutzer-Profile anzeigen
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2013, 13:29     Titel:
  Antworten mit Zitat      
Naja aber die figures müssen doch dennoch geöffnet werden, und springen dabei in den Vordergrund. Da hilft
Code:
getimage()

glaube ich auch nicht
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2013, 14:17     Titel:
  Antworten mit Zitat      
so vielleicht?

Code:

close all
for ii = 1:5
    figure(ii)
    hold all
end
for ii = 1:100
    for ij = 1:5
       
%         figure(ij)
        set(0,'CurrentFigure',ij)
       
        plot(randn(100,1))
        saveas(ij,['.\temp\f_' num2str(ij) '_' num2str(ii) '.fig'])
    end
end
 


Einfach mal den Unterschied zwischen
Code:
und
Code:
set(0,'CurrentFigure',ij)
vergleichen.
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2013, 15:52     Titel:
  Antworten mit Zitat      
Erstmal danke für die schnellen Antworten.

Habe den Code ausprobiert. Hier wird ja auch mehrmals
Code:

aufgerufen.
Aber dann werden die schon geöffneten Figures wiederverwendet, das ist clever.

Das kann ich bei meinem Code leider nicht mehr adaptieren Rolling Eyes
Es ist ein komplexes Skript für eine größere Simulation, welches ich nicht groß ändern kann.

Ich dachte da an eine Property, welche ich einfach hinzufügen könnte.Sowas wie:
Code:
figure('GoToForeground','off')

Das 'GoToForeGround' ist frei erfunden, aber vielleicht gibt es ja so eine ähnliche Property.

Dieser Code beschreibt das Problem, zum nachfühlen Very Happy
Code:

for ii = 1:10
    for ij = 1:5
       figure;
       plot( fft(randn(200,1)) );
       pause(0.2);
       saveas(gcf,['./temp/f_' num2str(ij) '_' num2str(ii) '.fig'])
       
       close;
    end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 27.02.2013, 16:14     Titel:
  Antworten mit Zitat      
Willst du denn wirklich soviel Figures öffnen?
Oder reicht dir nicht nur eine Figure, also Figure öffnen Plot ausgeben, abspeichern, neuen Plotin der aktuellen Figure anzeigen?

Habe jetzt vorher kurz mal getestet also mit:

Code:

hf=figure('Visible','off');
plot(hf,a);
saveas(hf,'test','tiff')


Speicher es bei mir als tiff Bild ab
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2013, 16:31     Titel:
  Antworten mit Zitat      
sehe ich genauso. Um auf dein Bsp. zurückzukommen, ginge z.B. das (wenn du mehrere axes hast, musst du das natürlich noch erweitern):

Code:

figure;
for ii = 1:10
    for ij = 1:5
       plot( fft(randn(200,1)) );
       pause(0.2);
       saveas(gcf,['./temp/f_' num2str(ij) '_' num2str(ii) '.fig'])
       cla('reset')
    end
end
 
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2013, 11:13     Titel:
  Antworten mit Zitat      
Leider muss ich so viele figures öffnen. Das sind die Ergebnisse der Simulation und diese muss ich abspeichern.

Der Code besteht aus ca. 15 Funktionen und tausend Zeilen Code. Ist auch nicht von mir geschrieben. Die figures werden erstellt wenn bestimmte Funktionen aufgerufen werden, und das passiert eben mehrmals.

Wenn der Code nicht so komplex wäre, würde ich sofort eure Lösung einbauen Very Happy
Ein figure öffnen und dann in diesem alle plots machen...

Um die Simulation schneller zu machen lasse ich mehrere Skripte gleichzeitig verarbeiten (auf einem Server mit vielen Rechenkernen), was zu den vielen
Code:
führt.

Vorschlag als .tiff abspeichern: Das mache ich sowieso schon, aber um die einzelnen Kurven zu vergleichen, brauche es auch als .fig gespeichert.

Kennt jemand einen Trick ?
Private Nachricht senden Benutzer-Profile anzeigen
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2013, 13:14     Titel:
  Antworten mit Zitat      
Habe eine Lösung gefunden Very Happy

Die figures werden unsichtbar aufgerufen. Dann kurz vor dem abspeichern mit set() wieder sichtbar gemacht, gespeichert und geschlossen

Überraschend einfach Very Happy

Code:

close all
for ii = 1:5
    for ij = 1:5
       H = figure('Visible','off');
       plot( fft(randn(200,1)) );
       pause(0.5);
       set(H,'Visible','on');
       saveas(gcf,['./temp/f_' num2str(ij) '_' num2str(ii) '.fig'])
       
       close;
    end
end


Danke für eure Vorschläge !!
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 28.02.2013, 14:17     Titel:
  Antworten mit Zitat      
Irgendwie verstehe ich deinen Code jetzt nicht.

Zuerst erstellst du eine Figure die unsichtbar ist, damit du sie kurz darauf sichtbar machst und danach dann wieder löscht. Da kannst du dir das unsichtbar und wieder sichtbar machen doch gleich sparen. Figure aufmachen plotten speichern schließen.
Private Nachricht senden Benutzer-Profile anzeigen
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2013, 16:27     Titel:
  Antworten mit Zitat      
Also der Beispiel-Code ist natürlich nur stark vereinfacht.

Beim normalen Ablauf werden die figures ziemlich lange angezeigt, UND springen in den Vordergrund beim erstellen.

Wenn ich diese aber unsichtbar erstelle, springen diese NICHT in den Vordergrund.

Wenn ich später zum speichern sichtbar mache und speichere, geht das so schnell dass ich auf dem Bildschirm nichts sehe, ABER das gespeicherte *.fig hat 'Visible' 'on' Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 28.02.2013, 16:34     Titel:
  Antworten mit Zitat      
Ok, so ergibt dies dann natürlich mehr Sinn Wink
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.