I need to generate an array of consecutive timestamps, in double and yyyymmddHHMMSS format, for specified start and end times. For example:
timestamps(1) = 2.012082104000000e+013;timestamps(2) = 2.012082104000100e+013;......timestamps(120) = 2.012082104020000e+013;
I wrote a working piece of code, but the str2double/datestr combination in the parfor loop is too slow (I used 120 seconds as an example, but in actual use, I will be generating about 10^7 consecutive seconds of timestamps). Is there a faster way to do this?
if matlabpool('size') == 0 matlabpool localendstartDate = num2str(2.012082104000000e+013);endDate = num2str(2.012082104020000e+013);startDateyyyy = str2double(startDate(:,1:4));startDatemm = str2double(startDate(:,5:6));startDatedd = str2double(startDate(:,7:8));startDateHH = str2double(startDate(:,9:10));startDateMM = str2double(startDate(:,11:12));startDateSS = str2double(startDate(:,13:14));startDateVec = [startDateyyyy startDatemm startDatedd startDateHH ... startDateMM startDateSS];startDate = datenum(startDateVec);endDateyyyy = str2double(endDate(:,1:4));endDatemm = str2double(endDate(:,5:6));endDatedd = str2double(endDate(:,7:8));endDateHH = str2double(endDate(:,9:10));endDateMM = str2double(endDate(:,11:12));endDateSS = str2double(endDate(:,13:14));endDateVec = [endDateyyyy endDatemm endDatedd endDateHH ... endDateMM endDateSS];endDate = datenum(endDateVec);timestamps = startDate:(1/24*1/60*1/60):endDate;parfor i = 1:length(timestamps) timestamps(i) = str2double(... datestr(timestamps(i),'yyyymmddHHMMSS'));end
Thanks in advance!
Best Answer