Extracting the daily time series from a text file to a single column

1 view (last 30 days)
Dear Matlab users,
I have a text file (attached here) containing daily time series from 2013 to 2019 and I want to take out the daily data points and save it in a column vector in chronological order. I would be really grateful of your help in this regard.
Best,
Shahram
  2 Comments
Guillaume
Guillaume on 23 Jul 2019
It would be a lot more useful if you attached a representative text file.
Shahram Sahraei
Shahram Sahraei on 23 Jul 2019
Dear Guillaume,
Thanks for you suggestion. I just modified my question and attached the text file to it.

Sign in to comment.

Accepted Answer

David Wilson
David Wilson on 24 Jul 2019
A quick hack is:
fname = 'D59.txt'
Flow = [];
fid=fopen(fname);
Yr = 2012;
R = [];
while 1
tline = fgetl(fid);
if ~ischar(tline), break, end
s = strtrim(tline);
disp(s)
if strncmp(s,'Day',3)
disp(s)
Yr = Yr+1;
X = [];
i=1;
while i < 32
s = deblank(fgetl(fid));
if isempty(s)
s = deblank(fgetl(fid));
end
%disp(s);
x = str2num(s); disp(x)
n = length(x);
if n == 8
x = [x(1:2), NaN, x(3), NaN, x(4), NaN, x(5:6), NaN, x(7), NaN x(8)];
elseif n == 12
x = [x(1:2), NaN, x(3:end)];
end
X = [X;x];
i=i+1;
end % for
Rdat = X(:,[2:end]);
r = Rdat(:);
r(find(isnan(r)))=[]; % drop bad days (leap year?)
R = [R; r];
end
end
fclose(fid);
plot(R)

More Answers (0)

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!