필터 지우기
필터 지우기

How to group specific values i several vectors following a condition?

조회 수: 1 (최근 30일)
e_frog
e_frog 2021년 10월 25일
댓글: Mathieu NOE 2021년 10월 25일
Hi,
I am struggeling to find a method to extract values that comply with a specific condition from a vector.
The input is a random vector like x = [3,5,13,43,54,3,2,3,5,6,3,18,19,17,25.2,5,3,5,3,59,0,4,3];
I would like to extract the 'blocks' of values, that are e.g. greater than the value of 10.
The expected result would be: res1 = [13,54], res2=[18,19,17,25.2] and res3=[59]
The number of result vectors is not predetermined, as x is a random vector. The result would not have to be extracted as vectors, cells would be fine as well.
Thanks in advance!

채택된 답변

Mathieu NOE
Mathieu NOE 2021년 10월 25일
hello
IMHO, according to the rules , the result should be : res1 = [13,43,54], res2=[18,19,17,25.2] and res3=[59]
and this is the code that achieve it :
x = [3,5,13,43,54,3,2,3,5,6,3,18,19,17,25.2,5,3,5,3,59,0,4,3];
%% main code
ind = (x>10);
p=find(diff(ind)~=0);
nb_of_blocks = length(p)/2;
for ci = 1:nb_of_blocks
ii = (1:2)+(ci-1)*2;
block{ci} = x(p(ii(1))+1:p(ii(2)));
end
  댓글 수: 2
e_frog
e_frog 2021년 10월 25일
편집: e_frog 2021년 10월 25일
You are right, res3=[0] is a typo. I edited the question accordingly.
Your answer works exactly the way needed. Thanks so much!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by