条目相等时min函数的行为(这里的主要原因是浮点数的四舍五入)

时间:2015-05-01 17:20:43

标签: matlab

这是代码:

a=[NaN, 0.0035; 2.0000 0.0025];
[~,b] = min (a(:,2));

那么b是什么?在我的项目中,b是2.如果我在项目之外运行它,我得到b = 1。

>> a=[NaN, 2; 1, 2];
>> a

a =

   NaN     2
     1     2

>> [~,b]=min(a(:,2))

b =

     1
编辑:我非常怀疑matlab中这个min函数有什么问题或者其他错误。这就是我在做的事情。

K>> Q

Q =

  Columns 1 through 12

   -0.0053   -0.0015   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014
   -0.0015   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045
   -0.0014   -0.0045       Inf   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045
   -0.0014   -0.0045   -0.0045       Inf   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045
   -0.0014   -0.0045   -0.0045   -0.0045       Inf   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045
   -0.0014   -0.0045   -0.0045   -0.0045   -0.0045       Inf   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045
   -0.0014   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045       Inf   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045
   -0.0014   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045       Inf   -0.0045   -0.0045   -0.0045   -0.0045
   -0.0014   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045       Inf   -0.0045   -0.0045   -0.0045
   -0.0014   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045       Inf   -0.0045   -0.0045
   -0.0014   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045       Inf   -0.0045
   -0.0014   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045   -0.0045       Inf
   -0.0053   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014
   -0.0033   -0.0030   -0.0029   -0.0029   -0.0029   -0.0029   -0.0029   -0.0029   -0.0029   -0.0029   -0.0029   -0.0029
   -0.0053   -0.0015   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014   -0.0014

  Columns 13 through 15

   -0.0053   -0.0033   -0.0053
   -0.0014   -0.0030   -0.0015
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
   -0.0014   -0.0029   -0.0014
       Inf   -0.0033   -0.0053
   -0.0033       Inf   -0.0033
   -0.0053   -0.0033       Inf

(m,g)=min(Q(:))

然后我得到m = -0.0053和g = 13 !!!!!这不应该是1吗?

K>> g

g =

    13

K>> m

m =

   -0.0053

有人可以帮帮我吗?或者您有过与matlab类似的经历?非常感谢。

编辑:(以防有人遇到类似的问题。)这里,min函数表现为strangly的主要原因是错误。打开工作区并仔细查看矩阵Q中的值后,我发现矩阵的(1,1)条目实际上小于矩阵Q的最小值。非常感谢你的时间和注意力。

1 个答案:

答案 0 :(得分:1)

匹配元素的kriskowal/Q。语法也在GUI中有详细记录,您可以键入{{1}}来查看输出参数。