我有一个向量,我想找到连续至少3次的0的块的索引。
y = [1 1 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 1 1];
所以在这种情况下,块应该是7-9的[0 0 0]和20-23的[0 0 0 0]。输出应该给我指数,如[7,9]和[20,23],甚至更好,将这些0的块更改为单个NAN成为:
[1 1 1 0 1 1 NAN 1 1 1 0 1 0 1 0 0 1 NAN 1 1]
谢谢!
答案 0 :(得分:8)
你能做的是:
1
的向量。find
和diff
查找向量从1变为0的位置(diff = -1)find
和diff
查找向量从0变为1(diff = 1)的位置true
的逻辑向量,其持续时间为>= 3
,并使用该向量查找起始索引(来自第2点中的值)。NaN
start indices + 1 : end indices
的值设为[]
。你准备好了!
编写解释实际上花了很多时间而不是编写代码。学习一些基本的MATLAB是一个非常好的练习,所以我会留给你。祝你好运!