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

automatischer speicher eines plotes fehlgeschlagen

 

Waldemar
Forum-Century

Forum-Century


Beiträge: 100
Anmeldedatum: 14.10.11
Wohnort: Neuss
Version: R2011b
     Beitrag Verfasst am: 24.10.2011, 17:28     Titel: automatischer speicher eines plotes fehlgeschlagen
  Antworten mit Zitat      
hallo zusammen,

ich hätte eine wichtige Frage:
ich möchte mir gerne einen plot völlig automatisch abspeichern!
Völlig automatisch ist mir von besonderer Bedeutung da ich demnächst Grafiken für ca. 2000 Dateien erstellen möchte und diese ebenfalls abspeichern möchte ohne dies per Hand zu machen.
Als Übung habe ich es mal für eine Datei ausprobiert:
Mein Skript sieht wie folgt aus:

Code:
[time vel std number]=textread(['vel_o_5_700_y5_z75.txt'],'%f%f%f%f','delimiter','\t','headerlines',1);
   
    subplot(3,1,1), plot(time, vel);
    title('vel o5 700 y5 z75')
    axis([0 3700 0 500])
    ylabel('vel')
    subplot(3,1,2), plot(time, number);
    axis([0 3700 0 70])
    ylabel('number')
    subplot(3,1,3), plot(time, std);
    ylabel('rms')
    axis([0 3700 0 50])
    xlabel('time')



Code:
[file,pfad] = uiputfile( {'vel_o_5_700_y5_z75' '.pdf'},  'X:\Spray\TMFB\Messtechniken\SA_Waldemar\Ergebnisse\kalibriert_timestep_90_grafik\');
      saveas(gcf, fullfile(pfad,file),'pdf');



Allerdings klappt das nicht ganz da ich zum einen dazu aufgerufen werde den Dateinamen einzugeben und zum anderen klappt mit dem pfad etwas nicht!ich möchte ja gern die Datei in
Code:
X:\Spray\TMFB\Messtechniken\SA_Waldemar\Ergebnisse\kalibriert_timestep_90_grafik\
einfügen. Geöffnet wird aber
Code:
X:\Spray\TMFB\Messtechniken\SA_Waldemar\Ergebnisse\kalibriert_timestep_90
!
Vielleicht hat es was mit dem aktuellen Ordner zu tun?
aktueller Ordner:
Code:
X:\Spray\TMFB\Messtechniken\SA_Waldemar\Ergebnisse\kalibriert_timestep_90


Zusätzlich schicke ich euch mal ein Screenshot des ungewollten Speicherortes (links) und die Hierarchie meiner Ordner (rechts) damit ihr mein Problem besser versteht!


Vielleicht könnt ihr mir ja helfen-dankbar wäre ich auf jeden fall!

MfG,


Waldi

gomatlab_hilfe2.png
 Beschreibung:

Download
 Dateiname:  gomatlab_hilfe2.png
 Dateigröße:  227.44 KB
 Heruntergeladen:  378 mal

_________________

Im "ich brauch Hilfe"-Status
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.10.2011, 18:33     Titel:
  Antworten mit Zitat      
Hallo,

du kannst file und path bei dem saveas-Befehl ja auch selbst angeben.
path sollte klar sein, und file könntest du in Abhängigkeit vom Namen der eingelesenen Datei definieren.

Weitere Empfehlungen für die 2000 Dateien:
- Mit DIR eine Liste der Dateien zusammenstellen
- Damit die Figures nicht alle gerendert werden:
Code:
figure('Visible', 'off')


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

Forum-Century

Forum-Century


Beiträge: 100
Anmeldedatum: 14.10.11
Wohnort: Neuss
Version: R2011b
     Beitrag Verfasst am: 25.10.2011, 11:09     Titel:
  Antworten mit Zitat      
hallo zusammen,
hallo harald,

habe gestern nach dem ich hier meine frage hineingestellt habe weiter probiert und bin dann anderweitig zum ziel gekommen (zumindest fast)!
und zwar konnte ich mit:

Code:
print('-dpdf', betriebspunkt)


alle in der schleife erzeugten plots automatisch in den aktuellen ordner speichern! zwar musste ich danach alle datei noch umordnen was ja nicht viel arbeitet macht!

...aus interesse:
gibt es denn eine mgl.keit den gewünschten speicherort zu bestimmen (in kombination mit print('.....))?

desweiteren habe ich auch deinen rat befolgt und

Code:
figure('Visible', 'off')
 


genutzt!zumindest beim zweiten mal!Wink


am ende nochmal mein ganzes skript falls jemand ein identisches problem hat:

Code:
list_all=dir;
list_all=list_all(~ismember({list_all.name},{'.','..'}));
dir_all={list_all.name};
length_list_all=length(list_all);

for i=1:length_list_all

     [time vel rms number]=textread(list_all(i).name,'%f%f%f%f','delimiter','\t','headerlines',1);
   

      dir_all_i=char(dir_all(i));

      length_dir_all_i=length(dir_all_i);
   
          if length_dir_all_i==24
       
             z_position=dir_all_i(16:20);
       
          elseif length_dir_all_i==23
       
             z_position=dir_all_i(16:19);
       
          elseif length_dir_all_i==22
       
             z_position=dir_all_i(16:18);
       
          else
       
            z_position=dir_all_i(16:17);
       
          end
     
      y_position=dir_all_i(13:14);
      stoff_press=dir_all_i(5:11);
      betriebspunkt=strcat(stoff_press, y_position, z_position);
     
      figure('Visible', 'off');
      subplot(3,1,1), plot(time, vel);
      title(betriebspunkt)
      axis([0 3700 0 500])
      ylabel('vel')
      grid on
      subplot(3,1,2), plot(time, number);
      axis([0 3700 0 70])
      ylabel('number')
      grid on
      subplot(3,1,3), plot(time, rms);
      ylabel('rms')
      axis([0 3700 0 50])
      xlabel('time')
      grid on
       
      % print -dpdf 'vel_o_5_700_y5_z75' für einzelne!
      print('-dpdf', betriebspunkt) %für schleife
     
%       [file,pfad] = uiputfile( 'vel_o_5_700_y5_z75.pdf',  'X:\Spray\TMFB\Messtechniken\SA_Waldemar\Ergebnisse\kalibriert_timestep_90_grafik\');
%       saveas(gcf, fullfile(pfad,file),'pdf');   %komplette GUI speichern

   
   
end



vielen dank an dich harald für die schnelle antwort!

mfg, waldemar
_________________

Im "ich brauch Hilfe"-Status
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: 25.10.2011, 11:44     Titel:
  Antworten mit Zitat      
Hallo Waldemar,

Code:
print('-dpdf', fullfile(pathname, betriebspunkt));


Noch ein paar Tricks:
Code:

dir_all_i = char(dir_all(i));
% Schneller:
dir_all_i = dir_all{i};

length_dir_all_i = length(dir_all_i);
if length_dir_all_i == 24
   z_position=dir_all_i(16:20);
...
% einfacher ohne IF:
z_position=dir_all_i(16:length_dir_all_i - 4);
 


Das Öffnen einer neuen FIGURE und das Erstellen der 3 AXES benötigt viel Zeit. Du könntest auch die eine FIGURE immer offen halten und nur das LINE-Objekt erneuern, das mit PLOT erzeugt wird:
Code:

FigH = figure;
Axes3H = subplot(3,1,1);
set(Axes3H, 'XLim', [0, 3700], 'YLim', [0, 500], ...
     'XGrid', 'on', 'YGrid', 'on', ...
     'NextPlot', 'replace');
ylabel('vel');

Axes2H = subplot(3,1,2);
set(Axes2H, 'XLim', [0, 3700], 'YLim', [0, 70], ...
     'XGrid', 'on', 'YGrid', 'on', ...
     'NextPlot', 'replace');
 ylabel('number')
     
Axes1H = subplot(3,1,1);
set(Axes1H, 'XLim', [0 3700], 'YLim', [0 50], ...
     'XGrid', 'on', 'YGrid', 'on', ...
     'NextPlot', 'replace');
xlabel('time')

for i=1:length_list_all
  [...]
  plot(time, vel, 'Parent', Axes3H);
  plot(time, number, 'Parent', Axes2H);
  plot(time, rms, 'Parent', Axes1H);
  [...]
end

Beim automatischen Erzeugen von 2000 Grafiken ist das nicht soo wichtig, da es egal ist, ob die Pause für einen Kaffee reicht, oder noch für ein Stück Kuchen dazu. Wichtig wird das, wenn der Nutzer vor dem Rechner wartet, da dann alles über 5 Sekunden Stress bedeutet. Oder wenn man 100.000 Grafiken erzeugen muss und der Java-Heap-Speicher voll läuft, da das Löschen eine FIGURE den Speicher nicht sofort wieder freigibt.

Man könnte auch noch einen Schritt weiter gehen und sich direkt die Handles der LINE-Objekte merken und nur diese per "set(Line1H, 'YData', vel)" updaten. Bei Echtzeit-Anwendungen wäre das die beste Idee.

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

Forum-Century

Forum-Century


Beiträge: 100
Anmeldedatum: 14.10.11
Wohnort: Neuss
Version: R2011b
     Beitrag Verfasst am: 25.10.2011, 12:09     Titel:
  Antworten mit Zitat      
hallo jan,


vielen dank.
für einen anfänger (wie ich es ja bin) sind solche tipps und hinweise von immenser bedeutung (für mich auf jeden fall) da das analysieren eines zweiten lsg.weges vieles neues offenbart!

werd die tipps gleich mal einbauen!

vielen dank an dich/euch!

mfg,
waldemar
_________________

Im "ich brauch Hilfe"-Status
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.