मैं मैटलैब में वेक्टर के तत्वों को रैंक (ऑर्डर) करना चाहता हूं और उसी मान वाले तत्वों में समान रैंक (अवरोही क्रम में) है। ranking values:वेक्टर में मैटलैब रैंक मान कई बार दोहराए गए
>> Rank = ComputeRanking([ 5 10 5 5 1])
Rank =
2 1 2 2 5
मैं mathworks साइट पर एक आंशिक समाधान नहीं मिला: तो मैं एक नियमित जैसे चाहते हैं
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 या अधिक हैं, तो यह काम नहीं करता है। डुप्लिकेट की मनमानी संख्या को संभालने के लिए मैं कैसे कर सकता हूं?
धन्यवाद बहुत @ डैन, टी टोपी महान काम करता है – MeSS83