У меня есть текстовый файл, содержащий временные метки из камеры, которая захватывает 50 кадров в секунду .. Данные таковы:Matlab: Преобразование временных меток в читаемый формат данного справочного Date-Time
1 20931160389
2 20931180407
3 20931200603
4 20931220273
5 20931240360
.
.
50 20932139319
. .. и так далее.
Это дает также время начала захвата, как
Date: **02.03.2012 17:57:01**
метки времени, в микросекунд не в миллисекундах, и MATLAB может поддерживать только до миллисекунд, но его хорошо для меня.
Теперь мне нужно знать, человеческий формат этих меток времени для каждого row..like
1 20931160389 02.03.2012 17:57:01.045 % just an example
2 20931180407 02.03.2012 17:57:01.066
3 20931200603 02.03.2012 17:57:01.083
4 20931220273 02.03.2012 17:57:01.105
5 20931240360 02.03.2012 17:57:01.124
и так далее
Я попытался это:
%Refernce Data
clc; format longg
refTime = [2012,03,02,17,57,01];
refNum = datenum(refTime);
refStr = datestr(refNum,'yyyy-mm-dd HH:MM:SS.FFF');
% Processing data
dn = 24*60*60*1000*1000; % Microseconds! I have changed this equation to many options but nothing was helpful
for i = 1 : size(Data,1)
gzTm = double(Data{i,2}); %timestamps are uint64
gzTm2 = gzTm/dn;
gzTm2 = refNum + gzTm2;
gzNum = datenum(gzTm2);
gzStr = datestr(gzNum,'yyyy-mm-dd HH:MM:SS.FFF'); % I can't use 'SS.FFFFFF'
fprintf('i = %d\t Timestamp = %f\t TimeStr = %s\n', i, gzTm, gzStr);
end;
Но я всегда получал странные выходы, такие как
i = 1 Timestamp = 20931160389.000000 TimeStr = **2012-03-08 13:29:28.849**
i = 2 Timestamp = 20931180407.000000 TimeStr = **2012-03-08 13:29:29.330**
i = 3 Timestamp = 20931200603.000000 TimeStr = **2012-03-08 13:29:29.815**
Выходное время примерно на несколько часов позже/раньше, чем указано. День другой.
Временной промежуток между каждой записью в массиве должен составлять почти 20 секунд. Поскольку у меня есть 50 кадров в секунду (1000 миллисекунд/50 = 20) .. и год, месяц, день, час, минута и секунды также должно указывать начальное время, указанное в качестве контрольного времени, так как оно примерно на несколько секунд раньше.
Я ожидал что-то вроде:
% just an example
1 20931160389 02.03.2012 **17:57:01.045**
2 20931180407 02.03.2012 **17:57:01.066**
Может помочь мне, пожалуйста ..! Где моя ошибка?
, но он не сможет узнать разницу во времени между контрольным временем a первая запись. – memyself
@Alex: Большое вам спасибо! Он решен. Но не могли бы вы просто сказать мне, где моя ошибка? Я не могу понять, где смысл решения таких проблем. – SamMom
@memyself: Чтобы преодолеть это, я просто добавляю datetime refernce как первую запись в массив. Спасибо всем! – SamMom