# counting how many times a certain value is repeated in a fixed interval

5 views (last 30 days)
Finda Putri on 27 Jun 2020
Answered: Finda Putri on 29 Jun 2020
Hi,
I need a help for a relatively simple calculation, but I keep failing to solve it.
Say I have the following data, where keeping the order is necessary:
X = [0,0,1,1,0,1,1,1,1,1,0,0]
and I want to know how many times '1' is repeated for 2x, and that two '1's is considered as 1 score. So score for X should be 3.
I have a relatively long data (1x74240) with 0, 1, and -1.
With the logic above, I need to know the score for when the data shows repeated 1 and repeated -1.
Any sort of input is appriciated.
Thanks

Tommy on 27 Jun 2020
Is the score 3 because of the following three 1s?
X = [0,0,1,1,0,1,1,1,1,1,0,0]
% ^ ^ ^
% 1 +1 +1 = 3
Would this have a score of 4?
X = [0,0,1,1,0,1,1,1,1,1,1,0]
% ^ ^ ^ ^
% 1 +1 +1 +1 = 4
And this a score of 2?
X = [0,0,1,1,0,1,1,1,0,1,0,0]
% ^ ^
% 1 +1 = 2
Finda Putri on 27 Jun 2020
no it does not work as pair.. I just happened to randomly assigned two-times 1's as my criteria for an example.
X = [0,0,1,1,0,1,1,1,1,1,0,0]
% ^1 ^1 ^1 ^this 1 no longer counts as 0 comes after that..

Matt J on 28 Jun 2020
Edited: Matt J on 28 Jun 2020
If you have the Image Processing Toolbox,
reg=regionprops(X,'Area');
score = sum(structfun(@(a) floor(a/2), reg))

KALYAN ACHARJYA on 28 Jun 2020
Multiple Ways: One way
X=[0,0,1,1,0,1,1,1,1,1,0,0];
idx=find(X==1)
for i=1:2:length(idx)-1
data(i)=idx(i+1)-idx(i)
end
score=sum(data)

#### 1 Comment

Finda Putri on 29 Jun 2020
I find this only work if my criteria is two 1's?

madhan ravi on 28 Jun 2020
Edited: madhan ravi on 28 Jun 2020
No toolboxes/loops needed:
z = (X(1:2:end)==1) + (X(2:2:end)==1) % works for even number of elements only!
score = nnz(z==2) % works only for 2 repetitions!

#### 1 Comment

Finda Putri on 29 Jun 2020
This works, but yes only when the criteria is two 1's as you said, for 2 repetitions.