count a sequence of 1 or 0

4 views (last 30 days)
Boby S
Boby S on 10 Dec 2019
Commented: Boby S on 11 Feb 2020
Hi
I have the following data (2 column, A and B) imported from Excel:
A B
0 0
0 1
1 1
1 0
1 1
1 0
0 1
1 1
0 1
0 1
I want to count the repeat of 0 and 1 in sequence for column A. I do not want to count all 1 or all 0. Next, based on this count, I want to count only 0 on column B for same sequence.
I expect the following result:
2 1
4 2
1 0
1 0
2 0

Accepted Answer

Stephen23
Stephen23 on 10 Dec 2019
Edited: Stephen23 on 10 Dec 2019
>> M = [0,0;0,1;1,1;1,0;1,1;1,0;0,1;1,1;0,1;0,1]
M =
0 0
0 1
1 1
1 0
1 1
1 0
0 1
1 1
0 1
0 1
>> X = [true;diff(M(:,1))~=0];
>> Y = diff(find([X;true]));
>> V = accumarray(cumsum(X),~M(:,2));
>> Z = [Y,V]
Z =
2 1
4 2
1 0
1 0
2 0
  3 Comments
Stephen23
Stephen23 on 6 Feb 2020
Generate X and Y, then do this:
>> F = @(v)sum(v(1+(numel(v)>1):end));
>> V = accumarray(cumsum(X),~M(:,2),[],F);
>> Z = [Y,V]
Z =
2 0
4 2
1 0
1 0
2 1
Boby S
Boby S on 11 Feb 2020
Thank you

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!