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 :

Recherche de valeur dans un vecteur


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    doctorant
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : doctorant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Recherche de valeur dans un vecteur
    Bien le bonjour !

    J'ai un petit problème de recherche de valeur dans un vecteur (un bout de matrice en fait...).

    L'idée est simple: j'ai un double A que je cherche dans un vecteur de double B.


    Code matlab : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     verif = sum(B == A)
     
    verif =
     
         0

    Théoriquement la valeur n'existe pas dans le vecteur B sauf que quand j'écris:

    Code matlab : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    [val,id] = min(abs(B-A))
     
    val =
     
         2.384185791015625e-07
     
     
    id =
     
           68609
     
    B(id)
     
    ans =
     
         2.108642317000000e+09
     
    A
     
    ans = 
     
        2.108642317000000e+09

    La valeur existe bien dans B et est identique à A (du moins à l'affichage...).

    Ma question: mais pourquoi ? et surtout comment y remédier ?

    Je précise qu'à la base B est une colonne dans une matrice (1205836,3) et que je vais chercher A dans une structure "A = struct1.struct2.pwet(x)";

    Je répète l’opération environ 3500 fois. Ca fonctionne dans la plupart des cas (99%) mais pas dans celui-ci.

    Par avance, merci.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    tu as bien montré que la différence n'est pas nulle, il n'y a donc pas égalité au sens strict entre A et B. Il faut donc introduire une tolérance lorsque tu compares des nombres flottants : Pourquoi 0.3-0.2-0.1 est-il différent de 0 ?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    doctorant
    Inscrit en
    Octobre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : doctorant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci pour la réponse. Si j'ai bien compris c'est juste une histoire d'arrondi à l'affichage mais les valeurs derrières sont bien différentes.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Oui, c'est bien cela.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. [Débutant] recherche de valeur dans un vecteur
    Par marsu63 dans le forum MATLAB
    Réponses: 7
    Dernier message: 26/03/2013, 14h33
  2. [Débutant] rechercher une valeur dans un vecteur de rang 2
    Par anthodub dans le forum MATLAB
    Réponses: 3
    Dernier message: 12/01/2012, 18h11
  3. [Débutant] Rechercher la position d'une valeur dans un vecteur
    Par philouxy dans le forum MATLAB
    Réponses: 2
    Dernier message: 01/03/2011, 16h56
  4. recherche d'une valeur dans un vecteur
    Par chronos21 dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/10/2009, 23h08
  5. Insérer une valeur dans un vecteur
    Par jalilv6 dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 08h04

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