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 :

Comparer un scalaire avec éléments vecteur


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut Comparer un scalaire avec éléments vecteur
    Bonjour tous,

    je voudrais faire un test du genre :
    avec A un vecteur.

    Le soucis est que lorsque je fais ceci j'ai le droit à :
    ??? Operands to the || and && operators must be convertible to logical scalar values.
    du coup, j'ai cru comprendre que ceci fonctionnerai mais ce n'est pas de cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (3<any(A))
    ...
    end
    du coup, je ne vois pas comment faire pour comparer un scalaire aux éléments d'un vecteur...
    pourriez vous m'aider svp ?

  2. #2
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    Tu cherches à savoir si un des élements de ton vecteur A est > 3, ou si tous le sont?

    Si tu veux comparer un scalaire à quelque chose, il faut que ce soit à un autre scalaire. Ensuite, chaque élement de ton vecteur est un scalaire, du coup selon ce que tu cherches à obtenir, il y a une solution adaptée.

  3. #3
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    et tu te trompes sur la syntaxe de "any"

    si tu cherches a savoir si un des élements de A est > 3 , il te faut écrire :

    et du coup ton code donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if any(A>3)
    ...
    end

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci d'avoir pris le temps de répondre

    je me suis trompé c'est pas > 3 que je veux marquer mais ~=
    désolé
    de toute façon ça ne change pas grand chose

    Citation Envoyé par tanguy4724 Voir le message
    Tu cherches à savoir si un des élements de ton vecteur A est > 3, ou si tous le sont?
    en fait je veux rentrer dans le if que si le nombre 3 n'existe pas dans le vecteur A

    Citation Envoyé par tanguy4724 Voir le message
    et tu te trompes sur la syntaxe de "any"
    si tu cherches a savoir si un des élements de A est > 3 , il te faut écrire :
    et du coup ton code donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if any(A>3)
    ...
    end
    je vais tester merci beaucoup

    donc ça donnera ceci (si je prends en compte le fait qu'il y avait une erreur ds mon code original) :

    if any(A~=3)
    ...
    end

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    ce que je ne comprends pas c'est que lorsque je fais ceci dans un petit code test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A=[-1 -2 -3 -4 -5]';
    if (7~=A)
        disp('hello')
    end
    ça fonctionne parfaitement mais dans mon code ça ne marche pas j'ai l'erreur que je vous ai montré précédemment

    voici la condition dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A{i,k}(m,1)~=B{i}(ind{i}(k-1,1):ind{i}(k-1,1)+nb(k))

  6. #6
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    fais attention, si tu mets

    if any(A~=3)
    ...
    end
    tu demandes clairement à Matlab "s'il y en a au moins un qui n'est pas égal à 3". Toi, ce que tu veux, c'est savoir s'ils sont tous différents de 3.

    Ce qu'il te faut, donc, c'est :

    not(any(A==3))
    Et là il te renvoit 1 si aucune valeur de ton vecteur n'est égale à 3, et 0 si au moins une valeur de ton vecteur est égale à 3.

    ca te va?

  7. #7
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    dans ton code, que sont A, B, nb, i, k, m ?

    (on ne peut pas entrer dans ton code et comprendre l'erreur sans un minimum de clarté )

  8. #8
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    et dans ton exemple, il y a toujours une incohérence entre les éléments que tu compares. Et du coup tu n'obtiens pas le résultat auquel tu penses.

    Contre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A=[-1 -2 -3 -4 7]';
    if (7==A)
        disp('hello')
    end
    Il y a bien un des éléments de A qui est égal à 7. Pourtant, ta condition est de savoir s'il y a un 7 dans A. Et là, Matlab ne te renvoit pas de "hello".

    Si tu ne compares pas des éléments comparables, tu ne peux pas supposer ce que fait Matlab.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Nikel !!!!!
    c'est exactement ce que je voulais

    merci beaucoup

  10. #10
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    Pas de souci, ravi d'avoir pu t'être utile.

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

Discussions similaires

  1. [Dates] Comparer une variable avec 2 éléments
    Par oceane751 dans le forum Langage
    Réponses: 14
    Dernier message: 07/01/2007, 17h54
  2. [struts] Comparer deux variables avec <logic:equal>
    Par trax020 dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/05/2005, 11h08
  3. [langage] comparer des scalaires
    Par Leishmaniose dans le forum Langage
    Réponses: 3
    Dernier message: 25/05/2005, 09h13
  4. [Swing]remplissage d'un JTable avec les vecteur
    Par 3adoula dans le forum Composants
    Réponses: 7
    Dernier message: 15/06/2004, 16h09
  5. Comparer l'enregistrement avec le suivant ...
    Par psyco2604 dans le forum ASP
    Réponses: 3
    Dernier message: 01/06/2004, 17h40

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