我有一个文本文件,其中包含每秒捕获 50 帧的相机的时间戳。数据如下:
1 20931160389
2 20931180407
3 20931200603
4 20931220273
5 20931240360
.
.
50 20932139319
... 等等。
它还给出了捕获的开始时间
Date: **02.03.2012 17:57:01**
时间戳以微秒而不是毫秒为单位,MATLAB 只能支持直到毫秒,但对我来说还可以。
现在我需要知道每一行的这些时间戳的人类格式......就像
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**
有人可以帮我吗..!我的错误在哪里?