MATLAB中数值的多次方,Matlab在向量中对值进行排名,其中元素重复多次

我想在Matlab中排序(排序)向量的元素,并且具有相同值的元素具有相同的排名(按降序排列).所以我想要一个例程如:

>> Rank = ComputeRanking([ 5 10 5 5 1])

Rank =

2 1 2 2 5

我在mathworks网站上找到了部分解决方案:ranking values:

function vecRank = ComputeRanking2(dataVector)

%

% Sort data in descending order with duplicates

%

[srt, idxSrt] = sort(dataVector,'descend');

% Find where are the repetitions

idxRepeat = [false; diff(srt) == 0];

% Rank with tieds but w/o skipping

rnkNoSkip = cumsum(~idxRepeat);

% Preallocate rank

vecRank = 1:numel(dataVector);

% Adjust for tieds (and skip)

vecRank (idxRepeat) = rnkNoSkip(idxRepeat);

% Sort back

vecRank (idxSrt) = vecRank ;

end

如果有一个重复(2个具有相同值的元素)但如果有2个或更多,如在我的示例中,它不起作用.如何处理任意数量的重复项?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值