使用matlab子集时间序列

时间:2014-06-26 17:00:21

标签: matlab time-series

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

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

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

1 个答案:

答案 0 :(得分:0)

请尝试以下代码:

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