find the position of a value in a "Double-precision array"
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaire
Stephen23
le 10 Août 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;
Réponses (1)
John D'Errico
le 10 Août 2023
Modifié(e) : John D'Errico
le 10 Août 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 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!