Borrar filtros
Borrar filtros

how to find the number of occurances

3 visualizaciones (últimos 30 días)
johnson saldanha
johnson saldanha el 14 de Dic. de 2018
Editada: madhan ravi el 14 de Dic. de 2018
i have a matrix x=[1 1 1 1 2 2 1 1 3 3 ]
i want the output to be x1=[1 2 1 3] and y1=[4 2 2 2]
x1 should have the reduced number from input and x2 should be the number of ocurances

Respuesta aceptada

madhan ravi
madhan ravi el 14 de Dic. de 2018
Editada: madhan ravi el 14 de Dic. de 2018
x=[1 1 1 1 2 2 1 1 3 3];
idx=logical([diff(x)~=0,1]);
x1=x(idx)
yy=find(idx);
yyy=diff(find(idx));
y1=[yy(1) yyy]
x2=histc(x,unique(x)) % number of occurences
unique_numbers_and_their_occurences=[unique(x); histc(x,unique(x))].' %bonus
Gives:
x1 =
1 2 1 3
y1 =
4 2 2 2
x2 =
6 2 2
unique_numbers_and_their_occurences =
1 6
2 2
3 2
  4 comentarios
johnson saldanha
johnson saldanha el 14 de Dic. de 2018
why are the number of columns of x1 and y1 not the same
madhan ravi
madhan ravi el 14 de Dic. de 2018
Editada: madhan ravi el 14 de Dic. de 2018
Try this I corrected the mistake:
x=[1;1;1;1;2;2;1;1;3;3];
idx=logical([diff(x)~=0;1]);
x1=x(idx)
yy=find(idx);
yyy=diff(find(idx));
y1=[yy(1);yyy]
x2=histc(x,unique(x)) % number of occurences
unique_numbers_and_their_occurences=[unique(x) histc(x,unique(x))]
Gives :
>> COMMUNITY
x1 =
1
2
1
3
y1 =
4
2
2
2
x2 =
6
2
2
unique_numbers_and_their_occurences =
1 6
2 2
3 2
>>

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by