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

Daten speichern

 

floh91
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2009, 09:20     Titel: Daten speichern
  Antworten mit Zitat      
Hallo,

ich verzweifel bald an einem (vermutlich) recht einfachen Problem.

Und zwar möchte ich berechnete Daten Y, C in Spalten in eine Datei abspeichern.

Ich dachte, dass ich es so lösen kann:

Code:
   fid= fopen(strcat(name,'_x.out'),'wt');
    fprintf(fid,'%2.6f %2.6f\n', Y(:), C(:));    
    fclose(fid);


Ich erhalte zwar 2 Spalten, aber matlab schreibt mir hier erst die Y-Werte hintereinander, d.h. Zeilenweise (2 Werte) und anschließend die C-Werte. Wo ist hier der Wurm drin?

Ein zweites Problem habe ich mit dem Abspeichern bzw. dem Druck des Plots. Es funktioniert zwar perfekt, aber ich möchte nur die Plots speichern und nicht auf dem Bildschirm geplottet bekommen, da in einem Ordner sich immerhin um die 100 files befinden und 100 Plots sind mir einfach zu viele offene Fenster.

Hoffe es kann mir hier jemand helfen.


Danke schön schon einmal.

der Floh

Der gesamte script sieht derzeit so aus:

Code:
%% Geschwindigkeit an der Stelle x
           
clear all
close all

X = 5;  %input('x-Wert:');

colums=16;  %%% the total numbers of columns
Headerlines=20;  %%% the number of the header lines

% Datein importieren

d=uigetdir('','Auswahl Datenordner');
cd(d);
pr=dir('*.dat');
names={pr.name};

numfiles=numel(names);

%% Loop for different files
for i= 1:numfiles
   
    fid= fopen(names{1,i},'r');
   
    InputText= textscan(fid, '%s', Headerlines, 'delimiter', '\n'); %read the head of the file
    Daten= fscanf(fid,'%g %g %g %g %g %g %g %g %g %g %g %g %g %g', [colums inf]);  %read the data
   
    fclose(fid);    
   
    [O,I]= min(abs(Daten(1,:) - X));
    K= find(Daten(1,:) == Daten(1,I));
    Y= Daten(2,K);
    C= Daten(4,K);
   
    xsel=  Daten(1,I)
   
    % Plotten
    figure,
    plot(C,Y)
    [pathstr, name, ext, versn] = fileparts(names{1,i});
 
   
    % Plot formatieren
    set(gca,...
     'Gridlinestyle','-','xMinorGrid','off','yMinorGrid','off',...
     'Fontname', 'Helvetica','fontsize',20);
    set(1,'units','centimeters','position',[0 0 8 8], ...
     'PaperOrientation', 'portrait', 'PaperPositionMode', 'auto',...
     'papersize',[14 10]);
    xlabel('Geschwindigkeit [m/s]')
    ylabel('y-Position [mm]')
   
    % Plot speichern
    saveas(gcf, name, 'eps');
   
    % Daten speichern
   
    fid= fopen(strcat(name,'_x.out'),'wt');
    fprintf(fid,'%2.6f %2.6f\n', Y(:), C(:));    
    fclose(fid);


end
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.10.2009, 09:35     Titel:
  Antworten mit Zitat      
Hallo

Das Problem liegt darin,
dass Matlab bei fprintf nach einander ausgibt.
Das kannst aber umgehen,
in dem du Array zu einer Matrix zusammensetzt.

ungefähr so, dass muss du für dich aber noch anpassen
(hier nur für Ausgabe in shell)
Code:

 Y=[ 1, 2, 3];  C=[4, 5, 6];
fprintf('%2.6f %2.6f\n', vertcat(Y, C));  

 
Private Nachricht senden Benutzer-Profile anzeigen
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2009, 09:59     Titel:
  Antworten mit Zitat      
Herzlichen Dank,

klappt wunderbar, allerdings plottet matlab mir es jetzt in command window. Ich habe es so geschrieben:

Code:
   fid= fopen(strcat(name,'.out'),'wt');
    fprintf('%2.6f %2.6f\n', vertcat(Y, C));    
    fclose(fid);


die *.out Datei ist leer und dafür alle Daten im command window aufgelistet Rolling Eyes

Wo habe ich denn hier nun wieder einen Denkfehler ? Embarassed
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.10.2009, 10:05     Titel:
  Antworten mit Zitat      
Hallo,
du muss file idetifier an fprintf auch übergeben

Code:

 fid= fopen(strcat(name,'.out'),'wt');
 fprintf(fid,'%2.6f %2.6f\n', vertcat(Y, C));    
 fclose(fid);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2009, 10:08     Titel:
  Antworten mit Zitat      
Oh mein Gott, ja richtig ... Danke schön !!!

Kannst du mir auch noch bei dem 2. oben beschriebenen Problem helfen?

Ein zweites Problem habe ich mit dem Abspeichern bzw. dem Druck des Plots. Es funktioniert zwar perfekt, aber ich möchte nur die Plots speichern und nicht auch noch den grafischen Bildschirmausdruck bekommen. In einem Ordner befinden sich um die 100 files und 100 Plots sind mir einfach zu viele offene Fenster.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.10.2009, 11:07     Titel:
  Antworten mit Zitat      
Upps, zweites Problem habe ich komplett übersehen
Ich würde einfach figure nur einmal aufmachen
und dann immer dort plotten.
Ziehe figure einfach vor der FOR-Schleife.
Code:


%% Geschwindigkeit an der Stelle x
           
clear all
close all

X = 5;  %input('x-Wert:');

colums=16;  %%% the total numbers of columns
Headerlines=20;  %%% the number of the header lines

% Datein importieren

d=uigetdir('','Auswahl Datenordner');
cd(d);
pr=dir('*.dat');
names={pr.name};

numfiles=numel(names);

%% Loop for different files
h_fig = figure;
for i= 1:numfiles
   
    fid= fopen(names{1,i},'r');
   
    InputText= textscan(fid, '%s', Headerlines, 'delimiter', '\n'); %read the head of the file
    Daten= fscanf(fid,'%g %g %g %g %g %g %g %g %g %g %g %g %g %g', [colums inf]);  %read the data
   
    fclose(fid);    
   
    [O,I]= min(abs(Daten(1,:) - X));
    K= find(Daten(1,:) == Daten(1,I));
    Y= Daten(2,K);
    C= Daten(4,K);
   
    xsel=  Daten(1,I)
   
    % Plotten

    plot(C,Y)
    [pathstr, name, ext, versn] = fileparts(names{1,i});
 
   
    % Plot formatieren
    set(gca,...
     'Gridlinestyle','-','xMinorGrid','off','yMinorGrid','off',...
     'Fontname', 'Helvetica','fontsize',20);
    set(1,'units','centimeters','position',[0 0 8 8], ...
     'PaperOrientation', 'portrait', 'PaperPositionMode', 'auto',...
     'papersize',[14 10]);
    xlabel('Geschwindigkeit [m/s]')
    ylabel('y-Position [mm]')
   
    % Plot speichern
    saveas(gcf, name, 'eps');
   
    % Daten speichern
   
    fid= fopen(strcat(name,'_x.out'),'wt');
    fprintf(fid,'%2.6f %2.6f\n',vertcat(Y, C));    
    fclose(fid);


end
delete(h_fig);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2009, 11:18     Titel:
  Antworten mit Zitat      
Danke schön und ich habe nun voller Verzweiflung noch mal

Zitat:
close all;


am Ende in die Klammer gesetzt und das funktioniert auch Razz
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 - 2024 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.