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

조회 수: 5 (최근 30일)
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
Walter Roberson 2019년 4월 17일
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))
  댓글 수: 2
HYZ
HYZ 2019년 4월 17일
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

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Akira Agata
Akira Agata 2019년 4월 17일
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
>>
  댓글 수: 9
Akira Agata
Akira Agata 2021년 4월 9일
OK. I believe the error was due to the difference between the 3D matrix in my sample code and the real data.
Is it possible to upload part of your real data and the modified code which generates the error?
Ahmad Bayhaqi
Ahmad Bayhaqi 2021년 5월 1일
Thank you for your code. It works for me.
However, since my temperature data contains date. How the result of looping includes the datetime to define when the temperature is higher than threshold?
Thank you very much

댓글을 달려면 로그인하십시오.


KSSV
KSSV 2019년 4월 17일
  댓글 수: 1
HYZ
HYZ 2019년 4월 17일
N is the vector I want after thresholding and the values must be consecutive for at least 5 times.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Image Data Workflows에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by