eq() and == failing to find matches in generated array.
1 次查看(过去 30 天)
显示 更早的评论
I have generated the following vector:
x = -2:0.1:5;
But now when trying to mask the location of various values it seems to fail to find entries that are shown in memory when viewed manually. E.g.
max(x==1.1) % returns 1 as expected.
max(eq(x,1.1)) % returns 1 as expected.
max(x==1.8) % returns 0 but expected 1.
max(eq(x,1.8)) % returns 0 but expected 1.
x(39) % returns 1.8000 as a sanity check to prove it is there.
Im guessing this is some sort of floating point precision issue - but don't know how to avoid it in a reliable way as I thought that was the point of eq().
Have tried to make this example case as simple as possible - so sorry if it seems a little random.
采纳的回答
David K.
2021-3-10
You are right that it is floating point precision. There are many ways to deal with this and your comment shows one of them with a slight adjustment:
max((abs(x-1.8)<=eps)) % returns 1
max(ismembertol(x,1.8,eps)); % also returns 1
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multidimensional Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!