【问题标题】:How to identify recurring patterns in time-series data in Matlab如何在 Matlab 中识别时间序列数据中的重复模式
【发布时间】:2019-06-19 18:28:36
【问题描述】:

我正在使用 Matlab 计算 ENSO 指数,其中一个条件是我必须找到异常的海面温度。条件是厄尔尼诺事件的特征是海面温度在 5 个月内比归一化的“0 值”高 0.5 度。我已经使我的每月时间序列数据具有逻辑性(即“1”是高于 0.5 的每月数据值,而“0”是低于 0.5 的每月数据值),但我想知道是否有命令允许我识别此值何时重复 5 次或更多次的 Matlab。

作为示例代码:

Monthly_data=[0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0]

理想情况下,我需要一个命令来查找至少五个“1”彼此接连出现的时间。这存在吗?

如果需要更多信息,请告诉我,我是 matlab 新手,所以我还不确定在这里提问的结构和语法。

谢谢!

【问题讨论】:

    标签: matlab time-series


    【解决方案1】:

    不确定这是你需要的,但也许会给你一些方向。

    > x = diff(Monthly_data);
    > find(x==-1)-find(x==1)
    ans =
    
       5   2   1   7
    

    这些是1 序列的长度。您可能需要用0 填充数组的前端和后端,以消除缺少一个边界的序列。

    要查找大于5的序列的起始索引:

    > s=find(x==1);
    > s(find(x==-1)-s>5)
    ans =  18
    

    > s(find(x==-1)-s>=5)
    ans =
    
        2   18
    

    请注意,由于 diff 滞后,它们比数组索引多 1,或者将其视为基于零的索引的位置。

    【讨论】:

    • 这非常有用!感谢您的指导和建议!
    猜你喜欢
    • 2019-05-11
    • 2012-07-29
    • 1970-01-01
    • 2014-12-09
    • 2019-01-19
    • 2021-10-04
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多