Issues with The Colon (:) Operator
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I have an issue with the colon operator which operates differently than expected.
Let's define the following vectors:
vA = 30:0.0025:60;
vB = 30:0.0025:70;
Now, since their starting point and step size are identical I'd expect their values to match in the overlap zones.
Yet, try this:
a = vA(642);
b = vB(642);
isequal(a, b)
a - b
As one could see, the result is different (46.0249999999 vs. 46.0250000006). This is very different from the documentation of the colon operator .
I was expecting its values no to be dependent on the end value (Only the number of steps depend on the end value).
Is it a bug or am I missing something?
Thank You.
0 commentaires
Réponse acceptée
Guillaume
le 20 Mai 2015
The behaviour of colon used to be fully documented in older versions and in a technical solution on Mathworks website. Unfortunately, that documentation has been removed in newer versions and the link on Mathworks is dead.
Basically, with non-integer steps, colon works from both ends to avoid accumulating errors. I can't fathom why Mathworks thinks that information is no longer relevant.
3 commentaires
Aravind C G
le 22 Avr 2020
Modifié(e) : Aravind C G
le 22 Avr 2020
Wow, thank you for this answer that clarifies things. I stumbled upon a similar issue while using the colon operator to pass a range of decimal values into a function. Sometimes the size of the functions output would be [1 19] and at others [1 20]
Now I see where the problem is coming from.
Edit: Ah, now I see it is included in the latest documentation as:
"However, if i is not an integer, then floating point arithmetic plays a role in determining whether colon includes the endpoint k in the vector, since k might not be exactly equal to j+m*i"
Stephen23
le 22 Avr 2020
The provided links are now dead, but these appear to provide the relevant information:
The original technical explanation (since removed from the TMW website) is archived here:
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!