0.48 and 0.72 not detected in the array
2 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I have attached varmat.mat. In this array, I can find any other elements in the array using find (SessionData.CoherenceTypes == 0.08) for example.
whenever I want to look for 0.48 or 0.72 using SessionData.CoherenceTypes == 0.48 or SessionData.CoherenceTypes == 0.72, the vector returned is empty although 0.48 and 0.72 are in the row vector. I tried in multiple computers and those two values are not detected.
Please suggest what was the problem. thanks.
1 件のコメント
Stephen23
2023 年 1 月 24 日
"Please suggest what was the problem."
This is a completely expected result with binary floating point numbers:
This is highly recommended reading material as well:
回答 (1 件)
the cyclist
2023 年 1 月 24 日
編集済み: the cyclist
2023 年 1 月 24 日
Due to floating point precision, the values are not exactly 0.48. For example,
load("varmat.mat","SessionData")
SessionData.CoherenceTypes(256) - 0.48
When doing comparison for floating point numbers, you need to check for equality within a tolerance.
See, for example, this documentation for details about floating point numbers and how to deal with them.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Detection についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!