Count size of groups of 1's

1 view (last 30 days)
David AR
David AR on 3 May 2019
Commented: Matt J on 29 Mar 2021
Hi all, this is my first question on the forum.
I have a vector called gpos that have 1's where I have a NaN value (gpos = isnan(data);)
For example
gpos = [1 1 1 0 0 1 1 0 1 1]'
I'd like to count the size of groups of 1's, like my expected result. How do I accomplish that? Thanks in advance.
result = [3 2 2]' % ignoring data that is zero

Accepted Answer

Erivelton Gualter
Erivelton Gualter on 3 May 2019
Here is a way you can perform this:
gpos = [1 1 1 0 0 1 1 0 1 1]';
[I, ~] = find(gpos == 1);
k = 0;
result = [];
for i=2:length(I)
if (I(i)-I(i-1)) ~= 1
result = [result; k+1];
k = 0;
else
k = k + 1;
end
end
result = [result; k+1];
disp(result);
But definetly, you might write something simpler .
  1 Comment
Matt J
Matt J on 29 Mar 2021
David AR's comment moved here:
Thank you. The code works flawlessly. Best regards.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!