我有一系列二进制向量(时间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
答案 0 :(得分:3)
diff
和cumsum
给出了很好的配对!
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