Find all unique values and replace it with new values

5 visualizzazioni (ultimi 30 giorni)
I have a vector with values
v = [0.23; 0.1; 0.33; 0.23 ; 0.33; 0.6; 0.6; 0.4];
I would like to find the unique values and replace the vector with numbers from 1, like
newV = [1; 2; 3; 1 ; 3; 4; 4; 5];

Risposta accettata

Walter Roberson
Walter Roberson il 6 Giu 2022
findgroups()
But since you are using floating point numbers you really should use the third output of uniquetol() instead
  4 Commenti

Accedi per commentare.

Più risposte (2)

KSSV
KSSV il 6 Giu 2022
v = [0.23; 0.1; 0.33; 0.23 ; 0.33; 0.6; 0.6; 0.4];
[c,ia,newV] = unique(v,'stable') ;
newV
newV = 8×1
1 2 3 1 3 4 4 5

Image Analyst
Image Analyst il 6 Giu 2022
Will this do:
v = [0.23; 0.1; 0.33; 0.23 ; 0.33; 0.6; 0.6; 0.4];
% newV = [1; 2; 3; 1 ; 3; 4; 4; 5];
[g, Tid] = findgroups(v)
g = 8×1
2 1 3 2 3 5 5 4
Tid = 5×1
0.1000 0.2300 0.3300 0.4000 0.6000
I know it doesn't match your desired but it's easy and maybe you don't need that exact order. If you need that exact order, can you explain why you need that order? (And don't jsut say I need it because I need it.)

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by