importing tsv files yyyy.mm.dd.tsv
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi I'm beginner in MATLAB. I need to import tsv files that are named as follows:
2004.01.01.0000.tsv
2004.01.01.0300.tsv
2004.01.01.0600.tsv
2004.01.01.0900.tsv
2004.07.01.1200.tsv
2004.01.01.1500.tsv
2004.01.01.1800.tsv
2004.01.01.2100.tsv
2004.01.02.0000.tsv
2004.01.02.0300.tsv
2004.01.02.0600.tsv
2004.01.02.0900.tsv
2004.01.02.1200.tsv
2004.01.02.1500.tsv
2004.01.02.1800.tsv
2004.01.02.2100.tsv
...
...
2005.12.31.2100.tsv
so each day has 8 files associated with it.
I need to import them as a 3 dimensional matrix using for loops.
I have the idea that my code should look something like this but it is not easy as I think
for yy=2004:2005
y= int2str(yy);
for mm=1:12
m= int2str(mm);
for dd=1:31
d= int2str(dd);
for ii=0000:0300:2100
i=int2str(ii);
z(:,:,)=importdata(y.m.d.i);
end
end
end
end
Thank you.
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 8 Jul. 2012
Bearbeitet: Walter Roberson
am 8 Jul. 2012
yearvals = 2004:2005;
monvals = 1:12;
dayvals = 1:31;
hourvals = 0000:0300:2100;
for ynum = 1 : length(yearvals)
y = yearvals(ynum);
for mnum = 1 : length(monvals)
m = monvals(mnum);
for dnum = 1 : length(dvals)
d = dvals(dnum);
for hnum = 1 : length(hourvals)
h = hourvals(hnum);
filename = sprintf('%04d.%02d.%02d.%04d', y, m, d, h);
if exist(filename, 'file')
z(:, :, :, hnum, dnum, mnum, ynum) = importdata( filename );
end
end
end
end
end
... and better hope that the arrays are all the same size.
I ordered the indices as hour, day, month, year, because MATLAB is most efficient when the index that changes faster is to the left. You might find that for processing purposes, that a different arrangement is more efficient.
I should warn that with the above set-up, the non-existent days such as February 30th will have slots in the resulting array, but that zeros will be stored there. You can change that to another value such as NaN by putting an "else" on the "if exist". (That would fail, though, if it was initial files that were missing, such as if the data started from January 3rd because of trading holidays.)
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Spreadsheets finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!