3

我试图找到短而有效的向量操作,这些操作可以通过它们的相对大小有效地对向量中的条目进行排名。例如,如果一个向量是:

A = [212 314 196];

我想要一个返回的函数:

B = [2 3 1];

我在搞乱排序功能,但到目前为止,我所有的解决方案都有我认为可能不必要的 for 循环。我很难过——有人知道更优雅的方式吗?

4

3 回答 3

2

Loren 有一篇关于反转排序顺序的不错的博客文章。

于 2012-05-28T17:01:59.270 回答
0

[~,B]=sort(A) 当 A 是行向量时。

[~,B]=sort(A,2) 当 A 是矩阵并且您想要每行的相对大小时。

http://www.mathworks.com/help/matlab/ref/sort.html

于 2013-12-12T19:05:59.283 回答
0

假设向量 A 中的所有数字都是不同的,你可以使用 A 的转置找到它们的排名:

sum(A > A.') + 1

对于您的向量,这会导致:

[2 3 1]

于 2015-08-29T20:22:47.540 回答