2014-03-04 83 views
2

假設我每隔2分鐘收集一次數據並計算15分鐘的平均值,那麼考慮到2不會進入15,我該怎麼做呢?將2分鐘的數據轉換爲15分鐘的平均值

說,如果我有一個數據集,像這樣

time = {'2009-01-15 00:02';'2009-01-15 00:04';... 
    '2009-01-15 00:06';'2009-01-15 00:08';'2009-01-15 00:12';... 
    '2009-01-15 00:14';'2009-01-15 00:16';... 
    '2009-01-15 00:18';'2009-01-15 00:20';... 
    '2009-01-15 00:22';'2009-01-15 00:24';'2009-01-15 00:26';... 
    '2009-01-15 00:28';'2009-01-15 00:30'}; 
dat = [1,3,1,4,2,5,6,1,3,1,4,2,5,6]; 

我怎麼會計算15分鐘,平均?

回答

1

代碼 -

% Edit this based on your choice of starting from 00:00 or from the first entry 
start_from_0000 = false; 

% Performing Code 
datenum_mins = datenum(time)*24*60; 
if start_from_0000 
    start1 = floor(datenum(time(1)))*24*60; 
    ind_15min_periods = floor((datenum_mins - start1)./15)+1; 
else 
    ind_15min_periods = floor((datenum_mins - datenum_mins(1))./15)+1; 
end 

mean_dat = zeros(max(ind_15min_periods),1); 
for c1 = 1:max(ind_15min_periods) 
    mean_dat(c1) = mean(dat(ind_15min_periods==c1)); 
end 
+0

對於所示的示例中,這將給出的3.1429的平均值,但也就是從倍00:02其平均到0時16這是一個14分鐘的時間間隔。這樣做的唯一合乎邏輯的方法是,假定在15分鐘時刻的值在時間00:16和00:18之間。這有意義嗎? – KatyB

+0

如果start_from_0000爲false,那麼15分鐘的時間間隔將從第一個條目開始,即給定數據的02:00。因此,從02:00到16:59的所有數據將被平均。下一個平均數據將是17:00至31:59。這不是你要找的嗎? – Divakar