使用向量运算在MATLAB中按幅度对矢量条目进行排序

时间:2012-05-28 16:42:31

标签: arrays matlab sorting vector ranking

我试图找到简短有效的向量运算,通过它们的相对大小有效地对向量中的条目进行排序。例如,如果向量是:

A = [212 314 196];

我想要一个返回的函数:

B = [2 3 1];

我正在搞乱sort函数,但到目前为止我的所有解决方案都有我认为可能不必要的循环。我很难过 - 有没有人知道更优雅的方式?

3 个答案:

答案 0 :(得分:2)

Loren在inverting the sort order上有一篇不错的博客文章。

答案 1 :(得分:0)

[〜,B] =当A是行向量时排序(A)。

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

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

答案 2 :(得分:0)

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

sum(A > A.') + 1

对于您的矢量,结果如下:

  

[2 3 1]