【问题标题】:Convert 2 minute data into 15 minute averages将 2 分钟的数据转换为 15 分钟的平均值
【发布时间】:2014-03-04 17:32:40
【问题描述】:

假设我以 2 分钟的间隔收集数据并想计算 15 分钟的平均值,考虑到 2 不会“进入”15,我将如何在 matlab 中执行此操作?

假设我有这样的数据集

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 分钟的平均值?

【问题讨论】:

    标签: matlab date average intervals


    【解决方案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
    

    【讨论】:

    • 对于所示示例,这将给出 3.1429 的平均值,但这是从时间 00:02 到 00:16 的平均值,即 14 分钟间隔。这样做的唯一合乎逻辑的方法是假设 15 分钟标记处的值介于 00:16 和 00:18 之间。这有意义吗?
    • 如果 start_from_0000 为 false,即 15 分钟间隔将从第一个条目开始,即给定数据的 02:00。因此,将平均从 02:00 到 16:59 的所有数据。下一个平均数据将是 17:00 到 31:59。这不是你要找的吗?
    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多