Are there any functions to randomly pick the minimum element from a vector if the vector has multiple minimum elements?

1 visualización (últimos 30 días)
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?

Respuesta aceptada

Walter Roberson
Walter Roberson el 15 de Jul. de 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 comentarios
Ryan
Ryan el 15 de Jul. de 2020
Thanks a lot!
Actually, I though of setting the value as Inf. But I am afraid the program will have bugs during the later programming. Seriously...
It is not homework. Seriously...
Anyway, thanks a lot!
Walter Roberson
Walter Roberson el 15 de Jul. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by