如何计算二元向量中连续组的长度?

时间:2015-04-16 17:32:08

标签: arrays matlab

我有一系列二进制向量(时间x 1),其中1表示给定时间点的两个变量之间的连接。这两个变量之间的联系是零星的,我想知道这两个变量之间的连接是多么“长”。

e.g。如果给定变量集的向量是:

[0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 ]

然后我想创建一个新变量,其中包含每个实例中连续1的长度。从上面的例子中,新变量看起来像这样:

[3,1,7]

第一次出现1时,它连续存在3个时间点,而下一次仅存在1个时间点,最后连接在数据中连续7个时间点。

如果有一个好方法可以解决这个问题,我会很乐意帮助你。

干杯

的Mac

1 个答案:

答案 0 :(得分:3)

diffcumsum给出了很好的配对!

a = [0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 ]
b = cumsum([a 0])
c = diff( [0 b(diff([a 0]) == -1) ] )
%// or
c = diff( [0 b(~(diff([a 0]) + 1)) ] )

c =

     3     1     7