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);