How do i count same consecutive occurrences
Mostrar comentarios más antiguos
Consider I have an array of occurrences
A=[1,1,1,1,1,2,2,2,2,3,3,3,3,2,2,2,1,1,1,1]
I want to find out how many 2 are on each occurrence. The answer should be 4 starting 6th position and 3 starting 14 positions.
Is it possible to do it in a wise Matlab way without many loop complications?
Respuestas (3)
madhan ravi
el 23 de Oct. de 2018
Editada: madhan ravi
el 23 de Oct. de 2018
0 votos
Daniel Pare
el 5 de Nov. de 2019
I wanted to count how many time in a row Head or Tail will occure from a random draw and I came up with this.
Let (x) be your vector of observation like x = [1 1 0 1 0 0 0 1]
The result will be: s = [ 2 1 1 3 1]
s=0 ;
j=2;
i=1;
while i < nb_it+1
c=1;
if i == nb_it
s = [ s c];
break
else
while x(i) == x(i+1)
c = c+1;
i = i+1;
if i == nb_it
break
end
end
end
s = [ s c];
i = i+1;
end
s = s(2:end); % to remove the first zero
sum(s) % the sum should be equal to the number of element in (x)
max(s) % This is the maximum of consecutive ocurence from the draw
5 comentarios
Guillaume
el 5 de Nov. de 2019
Or you could do:
s = diff([0, find(diff(x)), numel(x)]);
and be done...
Or similarly:
>> s = diff(find([1,diff(x),1]))
s =
2 1 1 3 1
Daniel Pare
el 5 de Nov. de 2019
Awesome, and this way takes way less time than doing many loop.
Thanks
giannit
el 23 de Abr. de 2020
That one line command is amazing, many thanks!
gummiyummi
el 3 de Ag. de 2020
I get an error: Error using horzcat. Dimensions of arrays being concatenated are not consistent.
Can anybody help resolve this?
Bruno Luong
el 3 de Ag. de 2020
Editada: Bruno Luong
el 16 de Dic. de 2021
Example:
A=[1,1,1,1,1,2,2,2,2,3,3,3,3,2,2,2,1,1,1,1]
Code
d = diff([0, A==2, 0]);
startidx = find(d==1)
lgt = find(d==-1)-startidx % EDIT error
Result
startidx =
6 14
lgt =
4 3
4 comentarios
gummiyummi
el 3 de Ag. de 2020
I still get the same error...
Bruno Luong
el 3 de Ag. de 2020
Editada: Bruno Luong
el 3 de Ag. de 2020
@As Sc: Can you tell if your A is a row vector? column vector? Something else?
Please type
class(A)
size(A)
then report the result. A is your array.
Ayush Meena
el 15 de Dic. de 2021
@Bruno can you please tell me what is idx here?
Bruno Luong
el 16 de Dic. de 2021
Categorías
Más información sobre Performance and Memory en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!