Are there any functions to randomly pick the minimum element from a vector if the vector has multiple minimum elements?
조회 수: 1 (최근 30일)
이전 댓글 표시
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
채택된 답변
Walter Roberson
2020년 7월 15일
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
Walter Roberson
2020년 7월 15일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!