2012-06-17 65 views
0

我有一個時間向量(格式爲h,min,sec,msec)。修改時間向量

TIME_= 
[120844.950000000 
120853.870000000 
120854.120000000 
120854.370000000 
120854.620000000 
120854.860000000 
120855.100000000 
120859.980000000 
120900.220000000 
120900.490000000 

. 
. 
. 
121024.420000000 
]; 

現在我想讓它均勻,

TIME_NEW=[STARTTIME: INCREMENT:ENDTIME ]; % INCREMENT=0.2sec; 

我看到有在Matlab setuniformtime可用功能。

我希望有一個像

TIME_NEW= setuniformtime(TIME_(:,1),'StartTime',TIME_(1,1),'EndTime',TIME_(end,1),'Interval',0.2); 

但是我沒有這個MATLAB版本。任何幫助?

我有問題及時格式

ith element 

TIME_NEW = [120859.980000000,120859.98000000 + 0.2,120860.18]

現在,應該是120860.18-->120900.18.

+0

這是不明確。你是說你想爲每個時間值增加0.2秒? –

+0

@ Oli Charlesworth plz see edited編輯 – Shahgee

回答

1

聽起來像你的問題的根源是,對於時間值,你使用的數值不符合正常的base-10(或base-anything)規則。如果你想繼續使用這種格式,你應該做的是
1)轉換成以秒爲單位的時間(或其他單位,只在一個常規的編號系統)
2)創建一個統一的矢量秒(或其他單位)
3)轉換回你的其他格式。

要從格式轉換成秒,你可以做到以下幾點:

#% format = hhmmss.msec 
TIME_  = 120859.98 #% and others if you want 
HOURS = floor(TIME_/10000); 
MINS = floor(mod(TIME_,10000)/100); 
SECS = mod(TIME_,100); #% keep the milliseconds part too 
TIME_IN_S = HOURS*3600 + MINS*60 + SECS #% convert hours/mins/secs to seconds 

你已經知道該怎麼做的間距。剩下的就是轉換回原來的格式。

HOURS_PLACE = floor(TIME_IN_S/3600) * 10000; 
MINS_PLACE = floor(mod(TIME_IN_S,3600),60) * 100; 
SECS_PLACE = mod(TIME_IN_S,60); 
UNIFORM_TIME = HOURS_PLACE + MINS_PLACE + SECS_PLACE; 

這應該消除秒地方增長大於60的「問題」,等等。

0

你已經寫好了答案,更或更少:

time_new = [time(1):0.2:time(end)]; 

當然,它是qui可能time(end)的值不會出現在輸出向量中。

+0

@ Oli Charlesworth plz編輯 – Shahgee

+0

@ user31177:我想我不明白你的時間格式。 –

+0

@ Oli Charlesworth第i個元素 TIME_NEW = [120859.980000000,120859.98000000 + 0.2,120860.18] 現在它應該是120860.18 - > 120900.18。 – Shahgee