precision problem when creating a time vector
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Benjamin Brammer
le 29 Nov 2022
Commenté : Benjamin Brammer
le 29 Nov 2022
Hello!
Ia have come across a very strange phenomena:
When you create the following vectors (time vectors) there seems to be a precision problem, allthough I don't understand why:
t1 = 0:.00001:0.0010; %time vector for a pulse 10µs step
t2 = 0.00101:.00001:0.015; % time vector for a discharge 10µs step
t3 = [t1, t2]; %resulting time vector for plot
Normally, I would expect, that if you try to find the index of t3 at the time of 4.5ms (0.0045) this should be no problem. But if you run the code
find(t3 == 0.0045)
you will get no return, as for some reason matlab is not hitting the exact 4.5ms in the vector.
Furthermore if you try to find the deviation by the following code line:
t3(451) - 0.0045 % 451 is the index for 4.5ms
you can see that there is a very small deviation from the exact value. But this should normally not be the case. At least for my understanding. Or where is the mistake here?
kind regards
Benjamin
1 commentaire
Jan
le 29 Nov 2022
@Stephen23: Please move this to the section of answers.
@Benjamin Brammer: "Or where is the mistake here?" Follow Stephen's links. You observe the expected behavior of floating point arithmetics with a limited precisions. This is explain in the first lesson of courses for numerical maths and you find it on the first pages of text books for this topic.
"Why is 0.1 + 0.2 ~= 0.3" is a frequently asked question. Welcome to the world of numerical maths.
Réponse acceptée
Stephen23
le 29 Nov 2022
Déplacé(e) : Cris LaPierre
le 29 Nov 2022
"But this should normally not be the case."
What you show is the completely normal and expected behavior of binary floating point numbers:
This is worth reading as well:
7 commentaires
Plus de réponses (0)
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!