Collapsing integer data into consecutive integers?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a matrix of values that include integers >= 0. There are repeats, and also gaps in consecutiveness. I would like to collapse the data into consecutive integers, keeping the order intact.
Example: [ 0 1 4 4 1 5 8 1 4]
would go to
[ 0 1 2 2 1 3 4 1 2]
I can do this with loops and brute force, but I'm wondering if there's any quick way to do this since it is frequently called within a loop?
Thanks!
3 comentarios
Respuesta aceptada
Más respuestas (1)
Iain
el 18 de Jun. de 2013
Ex = [ 0 1 4 4 1 5 8 1 4]; % A row
V = unique(Ex); % should be a row
L = bsxfun(@eq,Ex,V);
Collapsed = [0:(numel(V)-1)]*L;
Reconstructed = V' * L;
Ver también
Categorías
Más información sobre Multidimensional Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!