How can I replace this a value in the array with the k where the value is k-th min?

1 view (last 30 days)
I wanted to elaborate on the title, but it's not easy, so I'll explain it with the following example.
For example, there is [1 434 22 434 23 53 89 199]
I want to change it to [1 7 2 7 3 4 5 6]
434 is 7th min value. 22 is 2nd min value.
I want to know what i th min value of the each value is, and it insert to the matrix.
  2 Comments
Shameer Parmar
Shameer Parmar on 2 Jul 2019
Here you go..
A = [1 434 22 434 23 53 89 199];
newVector = [];
for i=1:length(A)
minimum = find(ismember(unique(A),A(i)));
newVector = [newVector, minimum];
end

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 2 Jul 2019
This is the simplest:
v = [1 434 22 434 23 53 89 199]
[~, ~, newv] = unique(v)

More Answers (1)

Chirag Nighut
Chirag Nighut on 2 Jul 2019
A = [1 434 22 434 23 53 89 199];
u = unique(A)
for i=1:1:length(A)
A(find(A==u(i))) = i;
end

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!