我有一个载体,如
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
答案 0 :(得分:5)
我不确定我是否已完全理解,但您不能只按B
和A_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);