IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

[ismember] Bug dans fonction ?


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [ismember] Bug dans fonction ?
    Bonjour à tous,

    Ca fait quelques années que je programme en matlab, mais là je suis assez embêté par un bête truc sous Matlab 7.0 (R14):

    x=[60:0.05:62]';
    - ismember(x,61:0.05:61.25) mets bien des 1s là où il le faut (6 composantes retenues)
    - par contre, ismember(x,60.95:0.05:61.20) ne retient que 4 composantes; après la première, il prend 61, 61.1, 61.2, comme si matlab avait décidé de changer l'incrémentation de 0.05 à 0.1 à partir de la valeur entière 61...

    J'avoue ne pas comprendre . Auriez-vous un avis sur la question???
    Un grand merci d'avance!

    ps: je n'ai pas créé de nouvelle fonction sous le nom ismember.

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    J'ai le même résultat en 7.1.
    Il s'agit du même comportement que dans la Pourquoi 0.3-0.2-0.1 est-il différent de 0 ?

    Si tu regardes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    x=[60:0.05:62]';
    t=[60.95:0.05:61.20];
    %logiquement on devrait avoir t(3)==x(22)
    %affichages
    t(3)
    x(22)
    %MAIS
    ismember(t(3),x(22)) %donne 0
    t(3)==x(22) %donne aussi 0
    x(22)-t(3) %ne donne pas 0 !!
    %Et pour se convaincre définitivement que ce ne sont pas les mêmes valeurs :
    sprintf('%1.15f',t(3)) %donne 61.050000000000004
    sprintf('%1.15f',x(22))%donne 61.049999999999997
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci Caroline, il fallait s'en douter! Ah ces imprécisions...
    Je vais utiliser une tolérance comme suggéré en faq.
    Encore merci et très bonne soirée,

    Thomas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug dans le framework sur la fonction LoadControl
    Par lutecefalco dans le forum ASP.NET
    Réponses: 6
    Dernier message: 24/09/2009, 22h59
  2. Réponses: 3
    Dernier message: 05/04/2009, 11h10
  3. [A-03] Bug dans fonction int() ?
    Par Gandalf24 dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/02/2009, 12h46
  4. Bug dans la fonction "répéter l'en-tête de groupe sur chaque page"
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 17/10/2006, 08h04
  5. [9i] bug dans la fonction transform XMLType (XSL) ?
    Par Nico57 dans le forum Oracle
    Réponses: 1
    Dernier message: 20/01/2006, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo