Effacer les filtres
Effacer les filtres

Issues with The Colon (:) Operator

14 vues (au cours des 30 derniers jours)
Royi Avital
Royi Avital le 20 Mai 2015
Commenté : Stephen23 le 22 Avr 2020
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.

Réponse acceptée

Guillaume
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.
This answer gives you the details.
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
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
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:

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical 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!

Translated by