Matlab 如何找到与其他向量的最高值对应的向量索引?

Matlab 如何找到与其他向量的最高值对应的向量索引?,matlab,vector,Matlab,Vector,我有一个向量,比如 A=[0.2 0.5 0.4 0.6] 这标志着 A_labels=[1 2 3 4] 其他向量B等于 B=[30 10 20] 我假设向量B的最高值将被分配给A中的最高标签,并按顺序减少。这意味着 30 will assign for 4 10 will assign for 2 20 will assign for 3 我将扫描向量B的所有元素,并根据上述规则查找与其对应的标签。你能帮我在MATLAB中实现这个方案吗?谢谢 A=[0.2 0.5 0.4 0.6]

我有一个向量,比如

A=[0.2 0.5 0.4 0.6] 
这标志着

A_labels=[1 2 3 4]
其他向量B等于

B=[30 10 20]
我假设向量B的最高值将被分配给A中的最高标签,并按顺序减少。这意味着

30 will assign for 4
10 will assign for 2
20 will assign for 3
我将扫描向量B的所有元素,并根据上述规则查找与其对应的标签。你能帮我在MATLAB中实现这个方案吗?谢谢

A=[0.2 0.5 0.4 0.6]
A_lables=1:1:size(A,2);
B=[30 10 20];
for i=1:size(B,2)
    //Find label of A_labels corresponds with B(i)
    // Result will be [4 2 3]
end

我不确定我是否完全理解了,但您是否可以对
B
A\u标签进行降序排序,并使用
B
中的排序顺序作为排序后的
A\u标签的索引

所以


我想这正是你想要的。我假设
A_标签
已排序,如您的示例所示

[~, ind] = sort(B); %// sort B and get *indices* of the sorting
[~, ind] = sort(ind); %// get *rank* of each element of B
result = A_labels(end-numel(ind)+ind);

谢谢路易斯·门多。我测试它,你的方法给出了我需要的。然而,代码中第二行[~,ind]=sort(ind)意味着什么@user8430好吧,它的意思与第一个相同:对向量进行排序,返回的不是排序后的向量,而是排序的索引。如果您这样做一次(行
[~,ind]=sort(B);
),您将得到
B
排序的索引
ind
。如果您再次对
ind
(line
[~,ind]=sort(ind);
)执行此操作,您将获得
B
的每个元素的排名,我添加了注释以表明这一点
[~, ind] = sort(B); %// sort B and get *indices* of the sorting
[~, ind] = sort(ind); %// get *rank* of each element of B
result = A_labels(end-numel(ind)+ind);