2014-03-04 86 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