获取向量中浮点数的索引

时间:2013-11-21 12:53:39

标签: arrays matlab vector

我已执行此代码,但它无法正常工作:

A = 1:0.1:1.4

A =

    1.0000    1.1000    1.2000    1.3000    1.4000

A == 1.3000

ans =

    0     0     0     0     0

我以为我会得到:

    ans =

        0     0     0     1     0

为什么不起作用?我怎样才能让它按照我的意愿运作?

谢谢。

3 个答案:

答案 0 :(得分:6)

比较花车时通常会这样。试试A(4)-1.3。它会给你一些小而不是零的东西。那是因为浮点数具有有限的精度。一般来说,最好不要用浮点数来测试相等性。

通常的方法是定义一个小容差(例如1e-9)并比较考虑该容差:

abs(A-1.3)<1e-9

答案 1 :(得分:1)

在基数2中写入时,

0.1具有无限扩展: 0.000110011001100110011001100110011001100110011001100110011001100

shell代码获取:

bc -lq
obase=2
1/10

Matlab将截断为50(?)位。因此,0.1 * 3和0.3是不同的。

答案 2 :(得分:0)

这是因为双精度。试试format long g然后再看看A,你会发现它不是1.3。看看MATLAB wiki,了解其原因。对浮点数进行相等测试永远不是一个好主意。