Ich habe genau die selbe frage: wollte jetzt gerade ein neues Thema oeffnen...(telepatie?)
Ich muss auch ein .txt file oeffnen (vide Anhang: 200806010600) ABER zeile nummer (1+k*15) ist 'header' und soll, deswegen, ignoriert werden.
t.
Ich habe, soweit, etwas in dieser Art implementier:
Code:
fid = fopen('200806010600t.txt', 'r');
% name of file to be opened
d = {};
% data are arrayed as: 15Lines-5Columns for col=1:5
% following code is for padding the matrix at right location (row and col) for lin=16:15:10800
sMan=['B(1:15,',int2str(col),')=d{1,',int2str(col),'};'];
s1 = ['B(',int2str(lin),':',int2str(lin+14),',',int2str(col),')=d{',int2str(((lin-1)/15)+1),',',int2str(col),'};'];
eval(sMan);
eval(s1);
end end
Ich haette, dazu, eine Frage:
die code hier oben benuetzte ich fuer folgendes:
1-File oeffnen
2- 'header' zu ignorieren, jede 16-te Zeile
3-speichere die restliche daten
4-schreib eine Matrix ("B") die geanu so ausseiht wie 200806010600.txt, ohne header. (also schreib nur die daten die in punkt 3 gelesen sind).
ABER
das muss ich systematish (sequentiaell) fuer eine (sehr!) lange reihe daten machen: ich hab ein 6 studen zeitschritt. Zb: (YYY_MM_DD_HH_MM_SS) 2008_06_01_06_00_00 ist der erste file.
Der zweite ist: 2008_06_01_12_00_00.
Der letzte is: 2008_06_30_18_00_00.
Ich moechte, also, eine schleife implementieren sodass MatLab es sequentiaell lesen kann.
Der namen des file(s) er esen sollte wolte ich ihn mit
format bank
n2=datenum('Jun 30, 200806:00:00 Pm');
% 0.25 ist zeit-schritt in Julianische Tage-Format for i=n1:0.25:n2
% error!!!!!!!!
fid = fopen('datenum(n,'YYYYMMDDHHMMSS'),'.txt', 'r');
d = {};
end
So, Die schleife schleift nicht...
Es liget an den format (klammern und so weiter).
Kann mir jemand bitte helfen????
Wie soll ich das FORMAL schreiben in matlab code?
while ~feof(fid)% problmem liegt hier: ABER WARUM?????????????? fgetl(fid); % header row
c = textscan(fid, '%n %n %n %n %n'); % Five data columns.
d = [d; c]; % d is NOT growing inside a loop: do not worry, MatLab! end;
fclose(fid);
for col=1:5 for lin=16:15:10800
sMan=['B',datestr(a,'yyyymmddHHMMSS'),'(1:15,',int2str(col),')=d{1,',int2str(col),'};']; % erster schritt fuellt di matrix manuell
s1 = ['B',datestr(a,'yyyymmddHHMMSS'),'(',int2str(lin),':',int2str(lin+14),',',int2str(col),')=d{',int2str(((lin-1)/15)+1),',',int2str(col),'};']; % restliche schritte fuellen die matrix automatisch eval(sMan);
eval(s1);
end end clear s1 sMan fid d c % vielleicht nicht noetig?? end
das heißt, dass es das File nicht gibt. Wie sehen denn die Dateinamen genau aus? Mir ist jetzt erst aufgefallen, dass die Datei, die du angehängt hast, gar keine Sekunden im Namen hat (anders als im Programmcode). Bei mir funktioniert mit dieser Datei Folgendes (die ist noch txt, nicht dat):
du hattest recht, Lucia!! hab gar nicht bemerkt dass der format der datei yyyymmddHHMM und nicht yyyymmddHHMMSS war..
Ich brauche urlaub.
Jetzt funktioniert es: es leuft ohne probleme.
Vielen dank
Marco
Einstellungen und Berechtigungen
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
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.