Arrays 查找连续的0块的索引
我有一个向量,我想找到0块的索引,这些索引至少连续3次Arrays 查找连续的0块的索引,arrays,matlab,Arrays,Matlab,我有一个向量,我想找到0块的索引,这些索引至少连续3次 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]和20-23的[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] 谢谢 您可以做的是: 用1在每一侧填充向量 使用find和
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]和20-23的[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]
谢谢 您可以做的是:
1
在每一侧填充向量find
和diff
查找向量从1变为0的位置(diff=-1)find
和diff
查找向量从0变为1(diff=1)的位置true
创建一个逻辑向量,其中持续时间>=3
,并使用该向量查找开始索引(从第2点中找到的值)NaN
开始索引+1:end索引的值设置为[]
实际上,编写解释比编写代码花费的时间要多得多。学习一些基本的MATLAB是一个很好的练习,所以我将把它留给你。祝你好运 我不熟悉matlab,但我认为首先将数组转换为字符串,然后再与'0…匹配。。。。0'到NAN,然后将其转换回数组。@Krisrove我也会这样做。在MATLAB中,我们使用
regexp
或regexprep
。