find the position of a value in a "Double-precision array"
4 views (last 30 days)
Show older comments
Hi, I have a 12904*1 double-precision array in matlab and would like to find the position of a value. For example, when I input "-10.1333", it returns "1", when I input "-10", it returns "5". I tried "find(time_samp==-10.1333)", it just returens "0×1 empty double column vector". Need some help, thank you.

1 Comment
Stephen23
on 10 Aug 2023
This is a completely expected result with binary floating point numbers:
This is worth reading as well:
Instead of incorrectly assuming exact equivalence of binary floating point numbers, compare the absolute difference against a tolerance:
tol = 1e-10; % you select this to suit your data
idx = abs(A-B)<tol;
Answers (1)
John D'Errico
on 10 Aug 2023
Edited: John D'Errico
on 10 Aug 2023
-10.1333 the EXACT VALUE? NO. All you see is that number written with 4 digits after the decimal point. You need to learn to use a tolerance.
Seriously, is 0.3333 the exact value of 1/3? Of course not! In fact, there is no finite number of digits that will exactly represent that fraction, as a DECIMAL, or as a number stored in a binary form, as it is internally in MATLAB.
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!