我正在使用matlab的“min”函数来确定对应于数组中最小值的索引(实际上只是一个向量)...一切都很好,除了我发现当有多个值时在共享最小值的数组中,函数[C,I] = min(A)仅返回其中一个索引。这实际上不是问题,除了它返回的索引并不总是具有最小值的第一个(即最小的)索引。文档说这应该是这种情况(因此,如果数组中的条目#4和条目#13具有相同(最小)值,则应返回I = 4),但这不是正在发生的情况。
有谁知道如何让min函数返回数组/向量中共享最小值的最小/最低索引?相关地,任何人都可以解释为什么函数不像它看起来应该表现的那样吗?
谢谢,
本·穆尼汉姆答案 0 :(得分:3)
如上所述,这些值可能不一样。考虑
a = [1 2 3 4 2 4 3 1];
b = a;
b(1) = 1+eps; b(end) = 1-eps; % added a small error to the 1st and 8th element
[~,Ia] = min(a);
[~,Ib] = min(b);
其中Ia
为1,Ib
为8。
解决方案是完善您的输入:
f = 0.1;% rounding off to 1 decimal place
c = round(b/f)*f;
[~,Ic] = min(c);
其中Ic
将为1,正如所料。