Arrays 用Ruby创建时间窗口

Arrays 用Ruby创建时间窗口,arrays,ruby,time-series,enumerable,Arrays,Ruby,Time Series,Enumerable,具有多个时间序列(时间戳、值)的数组,如下所示: time_series = [[[1234567, 0.8], [1234568, 0,9], [1234569, 1.0]], [[1234568, 0,7], [1234569, 0,2], [1234570, 1.2]], [[1234560, 0,9], [1234561, 0.2], [1234568, 0,1]]] 我想创建一个给定大小的时间窗口数组time\u size

具有多个时间序列(时间戳、值)的数组,如下所示:

time_series = [[[1234567, 0.8], [1234568, 0,9], [1234569, 1.0]], 
               [[1234568, 0,7], [1234569, 0,2], [1234570, 1.2]],
               [[1234560, 0,9], [1234561, 0.2], [1234568, 0,1]]]
我想创建一个给定大小的时间窗口数组
time\u size
。例如,如果我想创建
time\u size=2
的时间窗口:

    time_size = 2
    time_windows = create_time_windows(time_series, time_size)
    puts time_windows
#   time_windows => [[[], [], [[1234560, 0,9], [1234561, 0.2]]],
#                    [[[1234567, 0.8], [1234568, 0,9]], [[1234568, 0,7], [[1234568, 0,1]]],
#                    [[[1234569, 1.0]], [[1234569, 0,2], [1234570, 1.2]], []]]
我知道这不是一个可读性很强的示例,但操作可以总结为将时间序列数组拆分为子数组数组,子数组包含时间戳包含在相关时间间隔中的时间序列的片段

在本例中,我希望时间窗口大小为
2
,因此我选择了整个序列数组中最早的时间,并从那里开始计数。因此,我的第一个时间窗口包含三个早期序列中的所有点,它们的时间戳包括在
1234560
(我的序列中的原点,因为早期的点就是这个)和
1234560+2
之间。您可以看到,第一个窗口没有来自第一个和第二个系列的元素,因为没有时间戳包含在时间间隔内的点。下一个时间间隔是(
1234560+2
1234560+4
),依此类推


我对Ruby不是特别精通,所以如果社区能帮助我解决这个问题,我会很高兴。我曾考虑过在与注入组合时使用可枚举方法,例如slice\u,但我在尝试编码时不可能迷失方向。

为什么主输入数组中有3个元素数组,而这些数组又包含
[时间戳,值]
数组?为什么不使用9元素数组,其中每个元素都是
[时间戳,值]
的数组?同样,我无法解释预期的输出。因为每个3元素数组本身就是一个时间序列,所以可以将它们视为一段时间内三个不同传感器的输出<代码>时间序列=[来自加速计的信号,来自心率监护仪的信号,来自皮肤电传感器的信号]为什么主输入阵列中有三元素阵列,而这些阵列又包含
[时间戳,值]
阵列?为什么不使用9元素数组,其中每个元素都是
[时间戳,值]
的数组?同样,我无法解释预期的输出。因为每个3元素数组本身就是一个时间序列,所以可以将它们视为一段时间内三个不同传感器的输出<代码>时间序列=[来自加速计的信号、来自心率监视器的信号、来自皮肤电传感器的信号]