## Find at least 5 consecutive values above a certain threshold in a vector?

### Yu Zhi (view profile)

on 17 Apr 2019
Latest activity Commented on by Walter Roberson

on 17 Apr 2019

### Walter Roberson (view profile)

I have a vector
M = [3,3,5,7,8,8,9,7,4,3,2,1,7,6,5,2,2,2];
I want to find at least 5 consecutive values which are above the threshold, which is 4. So the vector will be
N = [5,7,8,8,9,7]
Could anyone help me with this? Thanks.

### Walter Roberson (view profile)

on 17 Apr 2019

starts = strfind([0 mask], [0 1 1 1 1 1]);
stops = strfind([mask 0], [1 1 1 1 1 0]);
N = M(starts(1) : stops(1))

Yu Zhi

### Yu Zhi (view profile)

on 17 Apr 2019
How can I modify this code to get N = [5 7 8 8 9 7]? I guess the code you provided gave only the first and last value.
>> mask = M > 4;
starts = strfind([0 mask], [0 1 1 1 1 1]);
stops = strfind([mask 0], [1 1 1 1 1 0]);
N = M(starts(1) : stops(1))
N =
5 7
Walter Roberson

### Walter Roberson (view profile)

on 17 Apr 2019
stops = strfind([mask 0], [1 1 1 1 1 0]) + 4;

### Akira Agata (view profile)

on 17 Apr 2019

If there are 2 or more consective values above the threshold, the following is one possible solution.
(* The following needs Image Processing Toolbox)
M = [3,3,5,7,8,8,9,7,4,3,6,5,8,5,8,2,1,7,6,2,6,2];
idx = M > 4;
idx = bwareafilt(idx,[5,Inf]);
label = bwlabel(idx);
N = cell(max(label),1);
for kk = 1:max(label)
N{kk} = M(label == kk);
end
Result:
>> N
N =
2×1 cell array
{1×6 double}
{1×5 double}
>> N{1}
ans =
5 7 8 8 9 7
>> N{2}
ans =
6 5 8 5 8
>>

on 17 Apr 2019

N(N>4)

Yu Zhi

### Yu Zhi (view profile)

on 17 Apr 2019
N is the vector I want after thresholding and the values must be consecutive for at least 5 times.