if all elemets of a array equal, which array will be choose by MAX function?
2 次查看(过去 30 天)
显示 更早的评论
Hi
I have an a = [0, 0 , 0 , 0 , 0 ] matrix and when try to use max(a) it always choose the first element as a max value. I need a function like MAX(x) but when all the elements are equal to each other is should choose the one of them randomly. is there any function like that ?
0 个评论
采纳的回答
Stephen23
2020-5-17
编辑:Stephen23
2020-5-18
There is no inbuilt function, but you can do it yourself very easily:
>> a = [0,0,0,0,0];
>> ida = find(a==max(a));
>> idx = randi(numel(ida))
idx = 4
>> a(ida(idx))
ans = 0
2 个评论
Steven Lord
2020-5-17
Don't use idx as an index into a. Use it as an index into ida.
a = [1:100 0 0];
ida = find(a == min(a))
idx = randi(numel(ida))
fprintf("Element %d of a is %d.\n", idx, a(idx));
fprintf("Element %d of the vector %s is %d, corresponding to %d in a.\n", ...
idx, mat2str(ida), ida(idx), a(ida(idx)))
The same idea holds when using max instead of min.
Stephen23
2020-5-17
@Steven Lord: thank you for bringing that to my attention... that was actually my original intent, but got lost somewhere along the way. Fixed now.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interactive Control and Callbacks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!