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!