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 :

condition if et comparaison de valeur à une liste


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut condition if et comparaison de valeur à une liste
    Bonjour,

    Je me permets de vous demander votre aide, car je souhaites comparer un valeur à une liste de valeur et savoir si elle est dedans ou non.

    Le problème c'est que lorsque j'utilise strcmp il me renvoi un vecteur style [0 0 0 1] donc pour une condition if c'est impossible à utiliser, car je peux pas dire si le vecteur contient au moins un 1.

    Il y'a aussi validatestring le problème de cette fonction c'est que ça renvoi un erreur dans le cas où la valeur n'est pas dans la liste de valeur et ça stop le code.

    Avez vous une astuce pour comparer simplement du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if myvalue (appartient à) list_value 
    %Calcul à faire 
    else 
    list_value=[list_value myvalue] %actualisé la liste avec la nouvelle valeur
    Merci pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Par défaut
    salut,

    regarde la fonction ismember ou le mot-clef any

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    ça me semble vraiment pas mal ce ismember ! merci bcp

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    J'ai un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ismember(spread.([Type_dossier date_spread])(j,1),valeur(1,:))
    valeur est au format cell 12000x1886 avec pas mal de valeur vide.
    je sais pas si le problème vient de là.

    Error using cell/ismember>cellismemberR2012a (line 199)
    Input A of class cell and input B of class cell must be cell arrays of strings, unless one is a
    string.
    
    Error in cell/ismember (line 71)
        [varargout{1:nlhs}] = cellismemberR2012a(varargin{:});
     

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    Problème résolu merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    Code : 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
    24
     
     
    nfields = numel(fieldnames(spread)); %Nombre de chemin de la structure 
     
       for    p = 1:nfields %boucle pour le nombre de chemin 
              date_spread=sscanf(list_spread(p,:).name,'%8c.txt'); %Scan l'element de la structure et récupère uniquement la date 
              b=size(spread.([Type_dossier date_spread])); %Matrice de taille de l'élément de la structure 
             for j= 4:12:b(1) %Boucle qui change de taille en fonction de la structure 
     
     
              [a,position_recherchee]= ismember(spread.([Type_dossier date_spread])(j,1),valeur(1,:)); %Recherche si le nom de la 1ère colonne de la structure est contenu dans le vecteur valeur, et renvoi la position 
     
           if  a==1; %regarde si a = 1 cad que la valeur de la colonne de la structure est contenu dans le vecteur valeur 
     
                 valeur(p+1,position_recherchee) = spread.([Type_dossier date_spread])(j,3); %Alors réalise le calcul 
     
           else valeur(1,:)=[valeur spread.([Type_dossier date_spread])(j,1)]; %Sinon on actualise le vecteur valeur avec la nouvelle valeur 
                [a,position_recherchee]= ismember(spread.([Type_dossier date_spread])(j,1),valeur(1,:)); %refais le calcul 
                 valeur(p+1,position_recherchee) = spread.([Type_dossier date_spread])(j,3);
           end
             end
     
     
        end
    je comprend pas pourquoi ma boucle bug au 2ème passage, quand p=2 ça me mets :

    Error using horzcat
    Dimensions of matrices being concatenated are not consistent.


    Je sais que le problème vient du ELSE , mais je comprend pas pourquoi.

    Pour simplifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valeur = A B C 
    else valeur(1,:) = [valeur(1,:) D]
    Je voudrais que ça me sorte :


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

Discussions similaires

  1. Comparaison d'une valeur à une liste
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/03/2008, 15h09
  2. ouvrir formulaire en donnant valeur à une liste
    Par zanou666 dans le forum IHM
    Réponses: 2
    Dernier message: 04/12/2007, 08h25
  3. ajouter des valeurs à une liste déroulante
    Par Simon2 dans le forum IHM
    Réponses: 3
    Dernier message: 30/07/2007, 23h59
  4. Réponses: 3
    Dernier message: 24/01/2007, 10h36
  5. Ajout d'une valeur à une liste
    Par NicoNGRI dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/01/2005, 12h34

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