【问题标题】:Subset a time-series using matlab使用matlab对时间序列进行子集
【发布时间】:2014-06-26 17:00:20
【问题描述】:

我有一个一分钟间隔的时间序列,我想从中提取 3 列数据。 时间格式为 dd/mm/yy hh:mm:ss 我想指定一个 20 分钟的时间值,我想为它提取所有相应日期(19:00 ; 19:20 ; 19:40 ; 20:00)的相应样本。

我已经使用
创建了一个时间序列 ts =时间序列(数据,时间) 样本=getdatasamples(ts, i)

但我无法定义可以进行此类提取的逻辑向量 i

【问题讨论】:

    标签: matlab time-series


    【解决方案1】:

    请试试这个代码:

    pat_19='19:[0 2 4]0:00';
    pat_20='20:00:00';
    out_19=~(cellfun('isempty',regexpi(a(:,1),pat_19,'match')));
    out_20=~(cellfun('isempty',regexpi(a(:,1),pat_20,'match')));
    out=a(find(out_19+out_20),:);
    

    这里,我假设秒的值总是'0'

    请看下面的例子:

    "a" 是一个元胞数组,第一列是日期,时间序列的数据值。

    a = 
    
        '15/08/81 19:00:00'    0.01
        '15/08/81 19:10:00'    0.02
        '15/08/81 19:20:00'    0.03
        '15/08/81 19:30:00'    0.04
        '15/08/81 19:40:00'    0.06
        '15/08/81 19:50:00'    0.07
        '15/08/81 20:00:00'    0.01
        '15/08/81 20:10:00'    0.02
        '15/08/81 20:20:00'    0.03
        '15/08/81 20:30:00'    0.03
    

    执行上述代码后,输出存储在元胞数组"out"

    out = 
    
        '15/08/81 19:00:00'    0.01
        '15/08/81 19:20:00'    0.03
        '15/08/81 19:40:00'    0.06
        '15/08/81 20:00:00'    0.01 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-06
      • 2016-09-10
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多