Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

convert day year hour data series with missing data to a serial number

Asked by Katerina F on 22 Aug 2014
Latest activity Commented on by Katerina F on 27 Aug 2014

I have a year of data from "01/01/2003 00:00" to "2003/12/31 23:59" with some days/hous missing from the data series. I think to convert these dates/times to serial numbers I have to use the datenum. To convert each one of these numbers I understand that I have to do: datenum(2003,1,1,0,0,0) which gives ans =

     731582.00

This is fine for one number but how I can convert the whole series? thanks, Katerina

0 Comments

Katerina F

Products

No products are associated with this question.

2 Answers

Answer by Andrei Bobrov on 26 Aug 2014
Edited by Andrei Bobrov on 26 Aug 2014
Accepted answer
f = fopen('dates1.txt');
c = textscan(f,'%s %s','collectoutput',1);
fclose(f);
out = datenum(strcat(c{1}(:,1),{'_'},c{1}(:,2)),'dd/mm/yyyy_HH:MM');

or

f = fopen('dates1.txt');
c = textscan(f,'%s','delimiter','\n');
fclose(f);
out = datenum(c{1},'dd/mm/yyyy HH:MM')

4 Comments

Katerina F on 27 Aug 2014

I would like to ask something additional to my previous question.

If now I have a file with a full year, as it is in the text file attached (one column months, one days, one hours), and I try to apply the above to convert to serial number, then the comment out = datenum(c{1},'dd/mm HH:MM') does not give a result (probably because the format is diffent)

What code I should apply in this case in order to convert the series to a serial number?

thanks, K

Andrei Bobrov on 27 Aug 2014

Let your year: year1 = 2014

dt = datenum([2014 1 1 0 0 0;2014 12 31 23 0 0]);
out = (dt(1):1/24:dt(2))';
Katerina F on 27 Aug 2014

thanks Andrei

Andrei Bobrov
Answer by Adam on 22 Aug 2014
str{1} = '01/01/2003 00:00'
str{2} = '2003/12/31 23:59'
datenum( str )
ans =
     1.0e+05 *
      7.3158
      7.3195

So you should just be able to put all your strings into a cell array and pass that in to datenum

5 Comments

Adam on 23 Aug 2014

Is that all one string in a single variable?

Katerina F on 25 Aug 2014

It is one column of data. Each line in the column is for example: 31/01/2003 16:00

Adam on 26 Aug 2014

If it is a cell array you should just be able to pass it to datenum. If not then you will need to convert each row to a cell containing the string rather than a standard char matrix using e.g.

dateCells = cellstr( dates )
Adam

Contact us