Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 查找连续的0块的索引_Arrays_Matlab - Fatal编程技术网

Arrays 查找连续的0块的索引

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和

我有一个向量,我想找到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
    diff
    查找向量从1变为0的位置(diff=-1)
  • 使用
    find
    diff
    查找向量从0变为1(diff=1)的位置
  • 通过将3中的值减去2中的值(并加1),求出每个间隔的持续时间
  • 使用
    true
    创建一个逻辑向量,其中持续时间
    >=3
    ,并使用该向量查找开始索引(从第2点中找到的值)
  • 将每个起始索引的值设置为
    NaN
  • 开始索引+1:end索引的值设置为
    []
  • 你准备好了


    实际上,编写解释比编写代码花费的时间要多得多。学习一些基本的MATLAB是一个很好的练习,所以我将把它留给你。祝你好运

    我不熟悉matlab,但我认为首先将数组转换为字符串,然后再与'0…匹配。。。。0'到NAN,然后将其转换回数组。@Krisrove我也会这样做。在MATLAB中,我们使用
    regexp
    regexprep