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

txt.files einlesen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 12:31     Titel: txt.files einlesen
  Antworten mit Zitat      
hallo miteinander,

mein heutiges problem:
Ich möchte mehrere txt.files aufeinmal einlesen. mein ansatz ist folgender:

Code:
r = 20111013;

for i = 8:15
 f = strcat('TSAT', num2str(r),'_',sprintf('%02d',i) );
 s = strcat('pfad',f);  
 fid = fopen(s);
 c(:,i) = textscan(fid,'%f32 %f32 %f32 %f32','Headerlines',1);
 fclose(fid);
 x = c(1,:);
 y = c(2,:);
end
 

Also: mein Dateinamen heißen TSAT20111013_07 ... TSAT201110_15, wobei _07 bis _15 die Stunden sind, diese wechseln, darum die for schleife.
Der obrige Code funktioniert, nur jetzt möchte ich einen zweiten Tag einlesen.
der dateiname: TSAT20111014_00 ... TSAT20111014_05

Nur leider steh ich grad wieder voll auf der Leitung, ich weiß einfach nicht, wie ich die zweite schleife für die Tage einbauen soll. Kann mir vielleicht von euch einer weiter helfen, wär echt super!

Am Ende vom Programm, möchte ich die werte x und y, die ich aus den txt.files auslese alle addieren daraus einen scatterplot machen (dieses Problem ist auch schon gelöst, es geht eigentlich nur darum, den zweiten Tag miteinzulesen)

Vielen Danke,
andi


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 18:59     Titel:
  Antworten mit Zitat      
Hallo Andi,

ich würde Tage und Stunden in eine Matrix schreiben und die Daten daraus auslesen:
Code:
hours=[13*ones(1,8) 14*ones(1,6); 8:15 0:5];
c=[];
for k=hours
  s=strcat('pfad/', sprintf('TSAT201110%02d_%02d',k));
  fid = fopen(s);
  c(:,end+1) = textscan(fid,'%f32 %f32 %f32 %f32','Headerlines',1);
  fclose(fid);
end;
x = c(1,:);
y = c(2,:);


Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 19:41     Titel:
  Antworten mit Zitat      
hi Sirius,

danke für deine Antwort. Jetzt werden die files schon mal eingelesen, nur bekomm ich jetzt beim auslesen folgende Fehlermeldung:

??? The following error occurred converting from cell to double:
Error using ==> double
Conversion to double from cell is not possible.

Error in ==> read_MData
c(:,end+1) = textscan(fid1, '%32 %32 %f32 %f32','Headerlines',1);

Leider weiss ich nicht so wirklich, was ich mit dieser Fehlermeldung anfangen soll. Wär für einen weiteren Tipp wirklich dankbar!

ciao
andi
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 21:39     Titel:
  Antworten mit Zitat      
Hallo Andi,

kleiner Fehler, textscan liefert cell-Arrays zurück.
Also entweder in Zeile zwei statt den Eckigen Klammern
Code:

oder das Eingelesene gleich in eine Matrix umwandeln:
Code:
c(:,end+1) = cell2mat(textscan(fid,'%f32 %f32 %f32 %f32','Headerlines',1));


Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2012, 16:41     Titel:
  Antworten mit Zitat      
hallo profis!

Ich habe so ein ähnliches Problem.

Meine Dateinamen sehen so aus:
tt_mean20010620_12_24
tt_mean20010621_00_07

Nur irgendwie schaff ich es nicht, diese mit den obrigen Code richtig einzulesen. habs so probiert:

Code:

 hours = [20*ones(1,1) 21*ones(1,1); 1:1 1:1];
 m = [12 0; 24 7]
c = {};
     for k = hours
         s = strcat('pfad', ...
                    sprintf('tt_mean200106%02d_%02d_%02d',k));
         fid = fopen(s);
        c(:,end+1) = textscan(fid, '%f32 %f32','Headerlines',1);
         fclose(fid);
     end;
 


aber irgendwie weiss ich nicht so recht, wie ich das m jetzt einbauen soll?

Danke,
bye
verena
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2012, 19:09     Titel:
  Antworten mit Zitat      
Hallo verena,
da Du drei Zahlen brauchst, mußt Du einfach die entsprechende Matrix anpassen:
Code:
hours = [20 12 24; 21 0 7]';


Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2012, 19:27     Titel:
  Antworten mit Zitat      
danke, hat geklappt Smile

lg. verena
 
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.