vector equals to value in matrix
4 次查看(过去 30 天)
显示 更早的评论
i have a vector, A=0.9997 and a matrix gg=(0.35:0.0001:2); when i try to run,= any(eq(A,gg)) or any(A==gg); to find if A is in gg it always returns it as zero even though it return one as it is part of the elements of gg .if i run any(eq(0.9997,gg)), it returns it as one. Is there any reason for this and how can i rectify this?
0 个评论
回答(2 个)
Dennis
2018-7-9
编辑:Dennis
2018-7-9
A=0.9997 and changing A in a loop are 2 different things.
This code will return 1.
gg=(0.35:0.0001:2);
A=0.9997;
any(A==gg)
This code wont, though A is 0.9997.
gg=(0.35:0.0001:2);
A=1.0997-0.1
any(A==gg)
The reason for this is that floating point numbers are not represented 100% accurate in binary form.
You can use abs(a-b)<tolerance to avoid this.
gg=(0.35:0.0001:2);
A=1.0997-0.1
any(abs((A-gg))<1e-10)
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!