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 :

tester l'existence d'une valeur dans un tableau


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2013
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 221
    Points : 31
    Points
    31
    Par défaut tester l'existence d'une valeur dans un tableau
    Bonjour tout le monde,
    j'ai des variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s1='5151612932' et s2='42367532' s3,s4,...
    je vais stocker ces variables dans un tableau.
    je veux pas avoir deux variables égales dans ce tableau, c'est pour cela j'ai pensé tester si une valeur déjà existe dans ce tableau
    donc y a t'il une fonction ou bien comment faire pour tester si s1 existe dans tabl??
    J'ai pensé à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=1:p
    find(tabl(p)=s1);
    end
    mais ça me donne rien
    comment faire et merci bien

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2013
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 221
    Points : 31
    Points
    31
    Par défaut
    J'ai pensé à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strcmp(tabl{r},s1)==0)
    si ça peut aider quelqu'un

  3. #3
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Ce que je propose, c'est de tout mettre dans le tableau et ensuite on enlève les valeurs redondantes.

    Si jamais ce sont des scalaires contenus dans s1, s2 sous forme de chaîne de caractère, tu peux faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    s1='453353';
    s2='49394';
    s3='349594';
    s4='49394';
     
    s=NaN(4,1);
     
    for iS=1:4
        s(iS)=str2double(eval(strcat('s',num2str(iS))));
    end
    s=unique(s);
    Tout est converti en "double"

    Si tu as autre chose dans s1, s2...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    s=cell(4,1);
    for iS=1:4
        s{iS}=eval(strcat('s',num2str(iS)));
    end
    s=unique(s);
    ++

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2013
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 221
    Points : 31
    Points
    31
    Par défaut
    Merci bien,
    en fait mr, mes variables sont par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    s1='1816151292'
    s2='9516181212'...
    donc laquelle j'utilise ?
    en plus, pour moi s1 et s2 sont identiques car elles contiennent chacune les même composantes (numéros) et ici l'ordre n'intervient pas
    donc y a t'il d'autre fonction à ajouter ou comment la modifier?
    merci bien

  5. #5
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    La première solution est sûrement meilleure parce que tu traites des doubles comme des doubles et non pas des chaînes de caractères.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2013
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 221
    Points : 31
    Points
    31
    Par défaut
    Bonjour tout le monde, j'ai un tableau rempli de 50 valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tabl{1}=4037151292
    tabl{2}=5283712932
    tabl{3}=40163712932
    ...
    je voulais savoir s'il y a des valeurs redondantes ( qui se répètent) et lorsque je dis qu'ils se répètent: une cellule qui contient 12345 et une autre qui contient 34521 sont redondantes ( l'ordre n'intervient pas)
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for iS=1:size(tabl,2)
        tabl{iS}=eval(strcat('tabl{iS}',num2str(iS)));
    end
    tabl=unique(tabl);
    ça marche pas
    que dois je changer ?
    et merci bien

  7. #7
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Tu n'as pas besoin de réutiliser eval puisque c'était pour résoudre le problème lié au fait que toutes tes valeurs étaient stockée dans différentes variables avec des noms différents. unique suffit ici pour supprimer les éléments redondants.
    Mais puisque 12345 est équivalent à 54321 ou 54312 etc dans ton cas, ce que tu peux faire, c'est classer les chiffres composant ton nombre. Par exemple faire en sorte que 34512 devienne 12345. Ensuite tu pourras faire un "unique". On attend ta suggestion !

    PS: tu es bien chercheur en informatique comme ton profil le suggère ?

Discussions similaires

  1. [MySQL] Tester l'existance d'une table dans une base de données
    Par méphistopheles dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/12/2006, 19h27
  2. [MySQL] Existance d'une valeur dans une table.
    Par méphistopheles dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/12/2006, 10h43
  3. Tester l'existence d'une colonne dans une table
    Par caps_corp dans le forum Access
    Réponses: 4
    Dernier message: 05/06/2006, 17h31
  4. Réponses: 2
    Dernier message: 08/12/2005, 14h41
  5. Test d'existence d'une valeur dans une table
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 29/12/2004, 10h38

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