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

Datei abspeichern in mehreren Formaten unter demselben Namen

 

teutopixx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.04.2011, 13:47     Titel: Datei abspeichern in mehreren Formaten unter demselben Namen
  Antworten mit Zitat      
Hallo,

anbei habe ich nochmal eine Frage:
In einem GUI lege ich zunächst einige Parameter fest, die ich dann abspeichere:
Das Abspeichern habe ich folgendermaßen realisiert:

Code:

[fn, pn] = uiputfile('*.mat', 'Auswahl speichern...');
cd (pn);
save (fn, 'Parameter1', 'Parameter2', '-mat');
 


Darauf speichert Matlab mir die Parameter in der Datei "fn.mat" - abhängig vom Dateinamen.

Im weiteren erstelle ich mit aufgenommenen Messwerten einen Plot, den ich unter demselben Dateinamen im selben Ordner, jedoch

mit anderer Dateiendung speichern möchte.

Dieses mache ich dann mit
Code:

saveas (figurehandle, fn, 'fig')
print (figurehandle, '-dpng', fn)
 


Das Problem ist nun , dass ich nicht drei Dateien mit verschiedenen Endungen und Formaten bekomme, sondern Matlab mir zunächst

eine Datei mit der Endung *.mat erstellt, diese dann aber ganz zuletzt überschreibt (der Name inkl. Endung bleibt gleich). Bei

der zuletzt erstellten Datei handelt es sich dann um eine PNG-Datei, die aber unter der Endung *.mat abgespeichert wird....

Wie bekomme ich es nun hin, dass mir der Dateiname, den ich ganz zu Beginn einmal durch die Eingabe (uiputfile) festgelegt

habe, beibehalte, und mir Matlab dann den Plot mit den beiden Endungen *.fig und *.png abspeichert?
_________________

----
teutoPIXX
Private Nachricht senden Benutzer-Profile anzeigen


c00l
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.04.2011, 16:03     Titel:
  Antworten mit Zitat      
Hi,

in deiner variable fn steht nach der Ausführung von uiputfile "irgendwas.mat". Übergibst du diesen string an saveas oder print wird der string als Dateiname verwenden. Eine Lösung währe die Endung .mat in dem Sting abezuschneiden bevor du den saveas bzw. den printbefehl verwendest.
Das "abschneiden könnte z.B. so aussehen:

Code:

 newfilename = regexprep(fn,'\.(.)*','');
 


dann sollte es funktionieren
Private Nachricht senden Benutzer-Profile anzeigen
 
ste99947

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2011, 13:15     Titel:
  Antworten mit Zitat      
Hallo,
zerleg deinen Dateinamen mit fileparts und setze ihn dann für jede Datei mit der passenden Endung neu zusammen.
Code:

filename='c:\matlab\test.mat'
ext_neu='.fig';
[pathstr, name, ext] = fileparts(filename)
filename=[pathstr filesep name ext_neu]
 

Grüße
Stephan
 
teutopixx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2011, 11:11     Titel:
  Antworten mit Zitat      
Hallo,

das Abspeicheren funktioniert mit den o. g. Empfehlungen so weit ganz gut.
Es tut sich nur gerade ein weiteres Problem auf:

Ich habe zwei Pushbuttons, die unterschiedliche Aktionen ausführen.
Der erste Pushbutton speichert sämtliche Variablen in einer *.mat-Datei - mehr nicht.

Beim Drücken des zweiten Pushbuttons werden die zwei zusätzliche Variablen an die bestehende *.mat-Datei angehängt (mit -append) und dann mit den Code-Beispielen von oben zwei weitere Dateien erzeugt. Zum einen eine Grafik und zum anderen ein Plot als '*.fig.

Das Problem ist nun, dass alles wunderbar läuft, solange ich diese Dateien in dem Verzeichnis speichere, wo auch meine *.m-Programmdatei liegt. Sobald ich über uiputfile ein anderes Verzeichnis ausgewählt habe, funktioniert die Aktion mit dem zweiten Pushbutton nicht mehr, da ich mich quasi nicht mehr im Arbeitsverzeichnis befinde.

Wie kann ich diesen Fehler umgehen?!
_________________

----
teutoPIXX
Private Nachricht senden Benutzer-Profile anzeigen
 
teutopixx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2011, 10:01     Titel:
  Antworten mit Zitat      
Hallo nochmal...

Ein weiteres Problem ist mir grade aufgefallen...

Ich speichere zunächst über einen Pushbutton (Pushbutton 1) die Variablen ab.

Code:

[fn, pn] = uiputfile('*.mat', 'Speichern unter...');
cd(pn);
save    (fn,...                                       % Dateiname
        'Variable1',...                                                        
        'Variable2',...                  
        '-mat');
 



Mit einem weiteren Pushbutton (Pushbutton 2) hänge zusätzliche Variablen an die schon bestehende Datei an (s.o.)
und lasse die Werte plotten.

Code:

[fn, pn] = uiputfile('*.mat', 'Aufgenommene Daten speichern unter');
cd(pn);
save    (fn,...                  
        'zusaetzliche_variable',...                
        '-append')                          

plotten (a, b, c, fn, pn);    
 


Das Anhängen von Variablen scheint grundsätzlich zu funktionieren.
Da ich nun aber alle Variablen unter einem Dateinamen mit der Endung *.mat speichern möchte, und zusätzlich dann die ausgeplottete Grafik unter demselben Dateinamen mit anderer Dateiendung speichern möchte, habe ich den Vorschlag von oben befolgt. Abschließend habe ich dann drei Dateien mit demselben Namen aber unterschiedlichen Endungen.

Das Problem ist nun, dass die Ursprüngliche *.mat-Datei, in der die Variablen gespeichert waren, dieselbe Dateigröße wie die *.fig-Datei hat und auch denselben Dateiinhalt. Was ist da schief gelaufen?

Den Code habe ich nochmal angefügt:

Code:

function (a, b, c, fn, pn)

fighandle = figure('Name', 'Ueberschrift');

t = 0:1/SN:(Zeit-1/SN);

plot(t, a);

xlabel('X-Achse', 'FontName','Arial')
ylabel('Y-Achse', 'FontName','Arial')

title('Titel','LineStyle','none','FontWeight','bold',...
    'FontSize',12,...
    'FontName','Arial',...
    'EdgeColor',[1 1 1]);


% Datei als *.fig speichern

cd(pn)
saveas  (fighandle,...                          % aktueller Plot
        fn,...                                  % Dateiname
        'fig')                                  

file = [pn,fn]

extension_grafik = '.png'
extension_plot = '.fig'

[pathstr, name, ext] = fileparts(file)

fn = [pathstr filesep name extension_plot]

% Datei als *.fig speichern
cd(pn)
saveas  (fighandle,...                          % aktueller Plot
        fn,...                                  % Dateiname
        'fig')
   
fn = [pathstr filesep name extension_grafik]

% Datei als *.png-Bilddatei speichern
print (fighandle, '-dpng', '-cmyk', '-r600', fn)  
 

_________________

----
teutoPIXX
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.