formulating elapsed time in hours for input data...

1 visualización (últimos 30 días)
Chris E.
Chris E. el 28 de Jun. de 2015
Respondida: Peter Perkins el 6 de Jul. de 2015
I have some code that I need to change from a string into a vector of numbers representing elapsed hours. My input data looks like:
date_str = '2015-06-05 14:17:36'
'2015-06-05 14:17:36'
'2015-06-05 14:17:36'
'2015-06-05 14:17:36'
'2015-06-05 14:17:36'
'2015-06-05 14:17:39'
'2015-06-05 14:17:39'
'2015-06-05 14:17:39'
'2015-06-05 14:17:39'
'2015-06-05 14:17:39'
'2015-06-05 14:17:39'
'2015-06-05 14:17:40'
'2015-06-05 14:20:09'
'2015-06-05 14:20:09'
'2015-06-05 14:20:09'
'2015-06-05 14:20:09'
'2015-06-05 14:23:00'
'2015-06-05 14:23:00'
'2015-06-05 14:23:34'
'2015-06-05 14:23:34'
'2015-06-05 14:23:35'
'2015-06-05 14:23:35'
'2015-06-05 14:23:35'
'2015-06-05 14:23:35'
'2015-06-05 14:23:35'
'2015-06-05 14:26:47';
This is a rather short list of the data, it is actually made up of over 1000000 date strings, the function I use now is:
function [e_time] = date2time(date_str)
date_format = 'mm/dd/yyyy HH:MM:SS';
t_datevec = zeros(size(date_str,1),6);
e_time = zeros(1,length(date_str));
for i = 1:length(date_str)
t_str = datestr(date_str(i),date_format);
t_datevec(i,:) = datevec(t_str);
e_time(i) = etime(t_datevec(i,:),t_datevec(1,:))/3600;
end
end
So it takes a long time to actually use this function, I'm sure that is due to the for loop, any suggestions or ideas to speed this up? Thank You!

Respuesta aceptada

Peter Perkins
Peter Perkins el 6 de Jul. de 2015
In MATLAB R2014b or later, use datetime. With your date_str variable converted to a cell array of strings:
>> d = datetime(cellstr(date_str))
d =
05-Jun-2015 14:17:36
05-Jun-2015 14:17:36
05-Jun-2015 14:17:36
05-Jun-2015 14:17:36
05-Jun-2015 14:17:36
05-Jun-2015 14:17:39
05-Jun-2015 14:17:39
...
05-Jun-2015 14:26:47
>> t1 = d - d(1); t1.Format = 'h' % elapsed since first
t1 =
0 hrs
0 hrs
0 hrs
0 hrs
0 hrs
0.00083333 hrs
0.00083333 hrs
...
0.15306 hrs
>> t2 = diff(d); t2.Format = 'h' % successive diffs
t2 =
0 hrs
0 hrs
0 hrs
0 hrs
0.00083333 hrs
0 hrs
0 hrs
...
0.053333 hrs
Those create durations. If you need double values, wrap the hours function around them. Hope this helps.

Más respuestas (0)

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by