Find all unique values and replace it with new values

4 Ansichten (letzte 30 Tage)
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];

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 6 Jun. 2022
findgroups()
But since you are using floating point numbers you really should use the third output of uniquetol() instead
  4 Kommentare
Elysi Cochin
Elysi Cochin am 7 Jun. 2022
okay sir will consider that

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

KSSV
KSSV am 6 Jun. 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 am 6 Jun. 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.)

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by