在matlab中排序并分配排序

在matlab中排序并分配排序,matlab,sorting,ranking,Matlab,Sorting,Ranking,嗨,我需要对向量进行排序,并为相应的排序顺序分配一个排序。我正在使用排序函数[sortedValue_X,X_Ranked]=sort(X,'down') 但问题是它为相同的值(零)分配不同的等级。 i、 e.x=[13 15 5 5 0 0 0 1 0 3]我想让零取相同的最后一个等级,即6,五需要共享第三个等级,等等。。 有什么建议吗?语法[sortedValues,sortedIndex]=sort(x,'down')没有返回您描述的等级。它返回排序值的索引。如果要使用一个数组中的排序顺序

嗨,我需要对向量进行排序,并为相应的排序顺序分配一个排序。我正在使用排序函数
[sortedValue_X,X_Ranked]=sort(X,'down')
但问题是它为相同的值(零)分配不同的等级。
i、 e.
x=[13 15 5 5 0 0 0 1 0 3]
我想让零取相同的最后一个等级,即6,五需要共享第三个等级,等等。。
有什么建议吗?

语法
[sortedValues,sortedIndex]=sort(x,'down')
没有返回您描述的等级。它返回排序值的索引。如果要使用一个数组中的排序顺序来重新排列另一个数组,这非常有用

正如@user1860611所建议的,
unique
似乎可以执行您想要的操作,使用第三个输出,如下所示:

x = [ 13 15 5 5 0 0 0 1 0 3];
[~, ~, forwardRank] = unique(x);
%Returns
%forwardRank =
%     5     6     4     4     1     1     1     2     1     3
要获得您想要的订单(降级),您需要颠倒顺序,如下所示:

reverseRank = max(forwardRank) - forwardRank  + 1
%Returns
%reverseRank =
%    2     1     3     3     6     6     6     5     6     4
[xSorted, ixsSort] = sort(x, 'descend');    %Perform a sort on x
reverseRankSorted = reverseRank(ixsSort);   %Apply that sort to reverseRank
你可能在这一点上做。但是,您可能希望将这些文件按发送顺序排序。这是对
reverseRank
向量的重新排序,使其与原始
x
向量保持同步,这正是
sort
的第二个参数所要帮助的。所以我们可以这样做:

reverseRank = max(forwardRank) - forwardRank  + 1
%Returns
%reverseRank =
%    2     1     3     3     6     6     6     5     6     4
[xSorted, ixsSort] = sort(x, 'descend');    %Perform a sort on x
reverseRankSorted = reverseRank(ixsSort);   %Apply that sort to reverseRank
由此产生:

xSorted =           15    13     5     5     3     1     0     0     0     0
reverseRankSorted =  1     2     3     3     4     5     6     6     6     6

Tiem可能就是你要找的东西

>> x = round(rand(1,5)*10)
x =
8     7     3    10     0
>> tiedrank(x)
ans =
4     3     2     5     1

您是否尝试过
独特的
功能?