How to generate sequence numbers

Consider matrix A as follows:
A = [
1
1
1
2
2
2
2
2
3
3
4
4
5
];
I want to generate a sequence numbers and reset these numbers wherever the ID changed.
B = [
1 1
2 1
3 1
1 2
2 2
3 2
4 2
5 2
1 3
2 3
1 4
2 4
1 5
];

 Respuesta aceptada

Stephen23
Stephen23 el 21 de Mayo de 2017
>> N = diff(find([1;diff(A)~=0;1]));
>> cell2mat(arrayfun(@(n)(1:n).',N(:),'uni',0))
ans =
1
2
3
1
2
3
4
5
1
2
1
2
1

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 21 de Mayo de 2017
out = ones(numel(A)+1,1);
ii = [true;diff(A)~=0];
jj = diff(find([ii;1]));
out(ii) = out(ii)-[0;jj(1:end-1)];
out = cumsum(out(1:end-1));

Categorías

Preguntada:

el 21 de Mayo de 2017

Respondida:

el 21 de Mayo de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by