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

2 次查看(过去 30 天)
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 个评论
Shameer Parmar
Shameer Parmar 2019-7-2
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

请先登录,再进行评论。

采纳的回答

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

更多回答(1 个)

Chirag Nighut
Chirag Nighut 2019-7-2
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

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by