Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Matlab : Problème de format dans boucle



  1. #1
    jackybarjo

    Matlab : Problème de format dans boucle


    ------

    Bonjour,

    J'ai un souci dans ma boucle :

    Code:
    cpt=0
    While ..
    ...
    cpt=cpt+0.001;
    if cpt==1
     display('test1');
    elseif cpt==2
     display('test2');
    else
    end
    
    
    end
    Le souci c'est que je suis sur que cpt passe par 1 et 2 mais pas moyen de rentrer dans mes conditions if et elseif??? peut être un problème de format de données???

    Merci

    -----
    Dernière modification par jackybarjo ; 01/04/2008 à 12h03.

  2. Publicité
  3. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  4. #2
    lou_ibmix_xi

    Re : Matlab : Problème de format dans boucle

    Est tu sûr qu'aprés ta boucle "while", cpt est égale à 0.999 ? De manière générale, c'est une très mauvaise idée de comparer des nombres à virgules flottantes, il vaut mieux fair un truc du genre:
    Code:
    if (abs (cpt - reference) < max_diff)
        ...
    end

  5. #3
    danyvio

    Re : Matlab : Problème de format dans boucle

    Mets une instruction juste derrière ou juste avant
    cpt=cpt+0.001;

    pour afficher le cpt et vérifier ta certitude de passer par les valeurs 1 ou 2, quitte à mettre un pas de +.01 pour ne pas encombrer par des milliers d'affichage
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  6. #4
    jackybarjo

    Re : Matlab : Problème de format dans boucle

    j'ai tout essayé, et cpt passe bien par 1 et et 2... mais j'ai trouvé le problème, en faisant "format long" je me suis apercu qu'il ne m'ajoutait pas toujours 0.001, mais des fois 0.00100000001 ou 0.000999999999 et du coup lors de ma différence le rsultat n'est pas nul... c'est un bug de matlab je pense. Pour résoudre mon problème, j'utilise une boucle for combiner avec un if..break..

  7. A voir en vidéo sur Futura
  8. #5
    lou_ibmix_xi

    Re : Matlab : Problème de format dans boucle

    Ce n'est absolument pas un bug de MATLAB, et c'est la démonstration de ce que je te disais:
    c'est une très mauvaise idée de comparer des nombres à virgules flottantes
    Regarde comment sont codés les chiffres flottants dans un ordinateur!

  9. #6
    ketchupi

    Re : Matlab : Problème de format dans boucle

    effectivement, ce n'est pas un bug, le codage des nombres à virgules (sur 32 bits je crois), et surtout des petits nombres, n'est pas précis. Il existe des incertitudes sur le codage des bits. Comme l'a dit Lou, mieux vaut comparer des nombres en relatif, par exemple avec l'une des inégalités dont il (elle) a parlées. Généralement, on utilise la variable eps.
    ++
    On ne force pas une curiosité, on l'éveille. Daniel Pennac

  10. Publicité
  11. #7
    lou_ibmix_xi

    Re : Matlab : Problème de format dans boucle

    Matlab utilise du 64 bits pour coder les nombres, mais ca ne change rien au problème...

    [HS]
    C'est bien "il", mais malheureusement on ne choisit pas son prénom sur les forums...
    [/HS]

  12. #8
    danyvio

    Re : Matlab : Problème de format dans boucle

    Je ne connais pas spécifiquement matlab, mais, m'étant frotté au cours de ma longue carrière à pas mal d'em*ts dans différents langages, je suggère ceci : au lieu de comparer sous la syntaxe :
    if cpt==1

    mettre

    if cpt==1.0

    C'est peut-être inutile, mais allez savoir...
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

Discussions similaires

  1. probleme d'indexage de boucle for avec matlab
    Par RBM dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 23/10/2007, 03h32
  2. fonction avec boucle for matlab
    Par bichou9 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 03/07/2007, 17h21
  3. Optimisation boucle Matlab.
    Par blanka808 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 13/04/2007, 12h50
  4. MATLAB-pb d'initialisation de boucle
    Par hameer dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 20/07/2005, 16h08
  5. sortir d'une boucle en matlab
    Par veligère dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 06/10/2004, 15h04
Découvrez nos comparatifs produits sur l'informatique et les technologies.