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

时间:2015-08-17 15:08:40

标签: 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_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

2 个答案:

答案 0 :(得分:5)

我不确定我是否已完全理解,但您不能只按BA_labels降序排序,并使用B中的排序顺序作为有序{{1}的索引}?

所以

A_labels

答案 1 :(得分:3)

我认为这可以满足您的需求。我假设A_labels已排序,如您的示例所示。

[~, 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);