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

1 次查看(过去 30 天)
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

更多回答(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