2012-04-11 186 views
1

我有一個包含時間戳進行捕捉每秒50幀的攝像機的文本文件可讀的格式。該數據如下:Matlab的:轉換時間戳給出的參考日期,時間

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** 

一個能幫助我請..!我的錯誤在哪裏?

回答

0

看起來你可以制定出一個記錄,第一條記錄之間的微秒數:

usecs = double(Data{i,2}) - double(Data{1,2}); 

轉換是到秒:

secsDiff = usecs/1e6; 

然後添加到初始日期時間你'd計算:

matDateTime = refNum + secsDiff/(24*60*60); 
+0

但他不能找出參考時間之間的時間差a找到第一個條目。 – memyself 2012-04-11 12:18:36

+0

@亞歷克斯:非常感謝!它解決了。但是,你能否告訴我我的錯誤在哪裏?我無法弄清楚解決這些問題的關鍵點在哪裏。 – SamMom 2012-04-11 13:40:41

+0

@memyself:爲了克服這個問題,我只是將參考日期時間添加爲數組的第一條記錄。謝謝大家! – SamMom 2012-04-11 13:42:46