convert an array into its counting sequence..

3 visualizaciones (últimos 30 días)
VISHWATEJ N
VISHWATEJ N el 2 de Ag. de 2019
Editada: madhan ravi el 2 de Ag. de 2019
i want to convert an array into its counting sequence. for example
if the input is :
x = [1 1 4 4 6 7]
two 1's two 4's one 6 one 7...
output must be :
y=[2 1 2 4 1 6 1 7]
can anyone help?

Respuestas (2)

madhan ravi
madhan ravi el 2 de Ag. de 2019
Editada: madhan ravi el 2 de Ag. de 2019
According to what I understand you want to count the number of occurances of each unique elements in the array x, then:
x = [1 1 4 4 6 7];
[u,~,idx]=unique(x);
v=accumarray(idx,1);
y=reshape([v,u(:)].',1,[])
Gives:
y =
2 1 2 4 1 6 1 7
  2 comentarios
Jos (10584)
Jos (10584) el 2 de Ag. de 2019
This fails for inputs like [1 1 2 1 1], where values are repeated.
I admit, the question is a little unclear, but "counting sequence" suggests, at least to me, more than just counting ;-)
madhan ravi
madhan ravi el 2 de Ag. de 2019
I'm not sure either let the OP verify it ;)

Iniciar sesión para comentar.


Jos (10584)
Jos (10584) el 2 de Ag. de 2019
This is called run-length encoding, for which there are very efficient functions available on the File Exchange.
I point you to my own function RUNINDEX which can also return this:
[~, RLE] = runindex(x)
y = reshape(RLE(:,[3 1]).', 1, []) % your format

Categorías

Más información sobre Mathematics 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