检测连续数字 - MATLAB

时间:2015-12-17 14:28:44

标签: matlab duplicates

我编写了一个程序来创建一堆像这样的二进制数:

out = [0,1,1,0,1,1,1,0,0,0,1,0];

我想在上面1中检查九个out数字的存在,例如当我们在输出中有这个时:

out_2 = [0,0,0,0,1,1,1,1,1,1,1,1,1];

out_3 = [0,0,0,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0];

condition变量应设置为1。我们不知道out变量中起点的确切位置。这是随机的。我只想在上面的变量中找到重复的值(一次或多次)。

PS。

我们正在寻找一个通用的答案来找到其他重复的数字(这里不仅仅是1,而且不仅仅是二进制数据。这只是一个例子)

1 个答案:

答案 0 :(得分:7)

您可以使用convolution来解决此类r连续检测案例。

案例#1:在二进制数组中查找连续的1s -

check = any(conv(double(input_arr),ones(r,1))>=r)

示例运行 -

input_arr =
     0     0     0     0     1     1     1     1     1     1     1     1     1
r =
     9
check =
     1

案例#2:为了检测任何数字是连续的,您可以稍微修改一下,就像这样 -

check = any(conv(double(diff(input_arr)==0),ones(1,r-1))>=r-1)

示例运行 -

input_arr =
     3     5     2     4     4     4     5     5     2     2
r =
     3
check =
     1

要从进一步的重复项中保存Stackoverflow,也可以随意查看相关问题 -

  1. Fast r-contiguous matching (based on location similarities).

  2. r-contiguous matching, MATLAB.