2013-02-04 65 views
0

我有一些數據,我在解析一組文件。 這些文件包含多個數據點的年,月,日,時,分和秒分界點。mm/dd hh:mm:ss浮動

這裏是流的例子:

> 2010/01/01,00:00:00.979131, 27.4485, 51.9362, 14.8, 6 
> 2010/01/01,00:00:01.021977, 27.5149, 51.9375, 16.0, 6 
> 2010/01/01,00:00:01.074032, 27.4797, 51.9446, 14.5, 10 
> 2010/01/01,00:00:01.663689, 25.8441,-152.8141, 14.6, 6 

到目前爲止,我可以做到這一點,以獲得秒:

raw = textscan(fid, '%d/%d/%d %d:%d:%f %f %f %f %d', 'delimiter', ','); 
m = cellfun(@double, raw, 'UniformOutput', false); %convert to doubles 
seconds = ((m{:,4} * 3600.0) + (m{:,5} * 60.0) + m{:,6}); 

丟棄的一年裏,我該如何使用我有什麼,加一些涉及月份和日期的特殊魔法可以創建一個單調遞增的數字,代表一年中的幾天浮點數?

+0

你爲什麼要放棄這一年?數據總是隻有一年嗎?如果涉及多年,那麼應該「01.01.2012」和「01.01.2013」​​(相同的月份和日期,但不同年份)導致相同的浮點值?哦,你正在尋找一個通用算法,或者你想知道如何在octave/matlab中實現它? – ain

+0

@ain是,數據總是一年。 – jml

+0

@ain如果你有一個通用的算法,這也將幫助我非常。謝謝! – jml

回答

2

使用datenum,例如:

datenum(Y, M, D, H, MN, S) 

回報對應的Y元素序列日期數字,男,d,H,MN,和S(年,月,日,時,分,和第二個)數組值。 datenum不接受單獨輸入中的毫秒數,而是秒數(DateString)輸入的小數部分。輸入Y,M,D,H,MN和S必須是double類型的相同大小的數組(或者可以是標量)。您還可以將輸入參數指定爲日期向量[Y M D H MN S]。

+0

我怎樣才能減去/做數學的Y部分的價值,使我得到一個從0-1的浮動?我只是減去734139? – jml

+1

爲什麼你需要在0-1之間浮動?你想要做什麼?你可以在0和1之間使用:vn =(v-min(v))./(max(v)-min(v))來標準化任何向量'v'。' – bla

+0

謝謝。我想從開始(0)到結束(1)將整個一年中的日期表示爲價值流。 – jml