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

print: Variable Dateinamen?

 

cordoba
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 79
Anmeldedatum: 13.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2014, 18:23     Titel: print: Variable Dateinamen?
  Antworten mit Zitat      
Hallo,

möchte mehrere Berechnungen durchführen und die Ergebnisse mit print in einer Datei (z.B. jpg oder png) speichern. Bei den Berechnungen ändern sich natürlich die Variablen: Sagen wir mal Variable A und Variable B. Hier ein Minimalbsp:

Code:
x = 0:.1:1;
A = 3; B = 4;
f = B + A*x.^2;
clf; hold on; grid on; plot(x,f),
combinedStr = strcat('A', num2str(A), 'B', num2str(B))
filename = num2str(combinedStr)
print('-dpng', num2str(combinedStr))


Folgendes Problem:

1. Wie macht man das eigentlich? Geht mein Ansatz in die richtige Richtung?

2. Gern würde ich die Bilder in einen Unterordner "Plots" ablegen. Wie muss man da den Pfad angeben?

3. Wenn z.B. der Wert eine Variable keine ganze Zahl ist (z.B. A = 3.5 und/oder B=1.2), wie kriegt man den Punkt mit z.B. einem Unterstrich ersetzt? Also aus "A=3.5" soll im Dateinamen "A=3_5" werden? Der Dateinamen sollte dann z.B. so aussehen: "A3_5B1_2"

Liebe Grüße

cordoba
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 07.02.2014, 18:33     Titel:
  Antworten mit Zitat      
Hallo
z.B. Punkt mit STRREP durch Unterstrich ersetzen:
Code:

x = 0:.1:1;
A = 3.5; B = 1.2;
f = B + A*x.^2;
clf; hold on; grid on; plot(x,f);

combinedStr = strcat('A', num2str(A), 'B', num2str(B))

filename      =  strrep(combinedStr,'.','_')
print('-dpng', filename)

 


PS: also NUM2STR muss man nicht so oft anwenden, nur wenn du die Zahlen konvertierst, nach dem STRCAT ist dann dann ein STRING
Private Nachricht senden Benutzer-Profile anzeigen
 
cordoba
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 79
Anmeldedatum: 13.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2014, 19:15     Titel:
  Antworten mit Zitat      
Danke, funktioniert super!

P.s.: Eine Frage hätte ich noch: Wie kann man den Speicherort ändern?

Liebe Grüße

cordoba
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

vor den Dateinamen den Pfad hängen, also

Code:
print('-dpng', fullfile(pathname, filename))


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 79
Anmeldedatum: 13.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2014, 23:52     Titel:
  Antworten mit Zitat      
Also in meinem Fall ein

Code:
print('-dpng', fullfile('plot', filename))


Danke!

Liebe Grüße

cordoba
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: 09.02.2014, 19:24     Titel: Re: print: Variable Dateinamen?
  Antworten mit Zitat      
Hallo cordoba,

Code:
A = 3; B = 4;
filename = sprintf('A%gB%g', A, B);
filename = strrep(filename, '.', '_');
pathname = 'C:\Plots';
print('-dpng', fullfile(pathname, filename))

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 79
Anmeldedatum: 13.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2014, 12:58     Titel: Re: print: Variable Dateinamen?
  Antworten mit Zitat      
Eine Frage zur Lösung von Jan S: Was ist "besser"?

Code:
combinedStr = strcat('A', num2str(A), 'B', num2str(B))


oder

Code:
filename = sprintf('A%gB%g', A, B);


oder egal?

Liebe Grüße

cordoba
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: 11.02.2014, 22:38     Titel: Re: print: Variable Dateinamen?
  Antworten mit Zitat      
Hallo cordoba,

Code:
combinedStr = strcat('A', num2str(A), 'B', num2str(B))

Aufruf von 3 M-Files: STRCAT und 2 mal NUM2STR. Der Aufruf eines M-Files benötigt einen gewissen Overhead.

Code:
filename = sprintf('A%gB%g', A, B);

Aufruf einer Built-in function, die deutlich weniger zeitlichen Overhead benötigt.

Aber solange diese Zeile nicht 100'000 mal aufgerufen wird, ist die Laufzeit nicht von Belang.
Deshalb würde ich trotzdem für SPRINTF plädieren, weil es einfacher ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 12.02.2014, 12:28 Uhr von denny
Von Grafiken und Plots nach Programmierung
 
cordoba
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 79
Anmeldedatum: 13.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2014, 18:44     Titel:
  Antworten mit Zitat      
Ok, danke!
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.