Are there any functions to randomly pick the minimum element from a vector if the vector has multiple minimum elements?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ryan
il 15 Lug 2020
Commentato: Walter Roberson
il 15 Lug 2020
Function min() picks the first minimum element from a vector if the vector has multiple minimum elements.
I want to randomly pick the minimum element from all the minimum elements and get its value and index.
Could you tell me if there is a function to do that?
0 Commenti
Risposta accettata
Walter Roberson
il 15 Lug 2020
No, there is no function provided for that. You can write such a function, though. The difficulty of doing it will depend upon whether you are working with a vector or something that is at least 2D (in which case it has to process per row or per column)
5 Commenti
Walter Roberson
il 15 Lug 2020
NR = 3;
[sortedvals, sortidx] = sort(YourVector);
LastSameIdx = 1;
MinVals = zeros(1,NR);
RandomIdx = zeros(1,NR);
for K = 1 : NR
LastSameIdx = 1;
while LastSameIdx < length(YourVector) && sortedvals(1) == sortedvals(LastSameIdx+1)
LastSameIdx = LastSameIdx + 1;
end
thisidx = randi(LastSameIdx);
MinVals(K) = sortedvals(thisidx);
RandomIdx(K) = sortidx(thisidx);
sortedvals(thisidx) = [];
sortidx(thisidx) = [];
end
Outputs are MinVals and RandomIdx.
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!