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 :

Plot/Extraction data avec condition sur texte sans boucle


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Plot/Extraction data avec condition sur texte sans boucle
    Bonjour,

    je suis confronté à un gros problème qui est sans doute très simple à résoudre pour les experts mais je débute avec matlab et avec la programmation ...

    Concrètement:
    Soit une matrice M(n,m) (en fait n=m=500) soit 250 000 cellules
    Pour certaines de ces cellules j’ai des informations provenant de deux fichiers distincts.

    Le premier fichier, le fichier A, correspond à un vecteur de 250 000 lignes chaque cellule contient une valeur numérique. Ce fichier permet donc de caractériser l’ensemble de mes cellules de la matrice M.

    Le deuxième fichier, le fichier B, correspond à un tableau avec 100 000 lignes et 9 colonnes.
    Les deux premières colonnes sont les coordonnées dans ma matrice M de 100 000 cellules prises au hasard parmi les 250 000 cellules.
    Les autres colonnes sont des indices (valeur numérique), des descriptions (chaîne de caratères ou code alphanumérique) caractérisant les mêmes 100 000 cellules.
    J’ai importé ce deuxième fichier B
    Avec la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    B = textscan(fopen('fichierB'),'%d %d %d %d %s %s %d %s %s','delimiter','\t');
    J’obtiens un tableau
    Avec 9 colonnes qui correspondent à
    Coord X coord Y indice1 indice2 descrition1 description2 nbr1 description3 description4

    Ce que je souhaite c’est « ploter » ou récupérer dans un tableau les valeurs du fichier A en fonction de certaines conditions (sur l’ensemble des colonnes) dans le fichier B (mon tableau) mais sans loupe.

    J’ai créer pour cela un vecteur Vlien qui me permet d’avoir la correspondance entre les deux fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vlien = B{1}+1+B{2}.*500;
    Ensuite j’arrive à ploter mes valeurs de A en fonction de l’indice1 (colonne 3 du tableau B) en prenant les valeurs de la colonnes 4 correspondantes pour abscisses et les valeurs du vecteur A correspondantes comme ordonnées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Valeur_indice1=4; %% l’indice1 correspond à la colonne 3 du fichier B
    figure;
    plot(B{4}(B{3}==Valeur_indice1, A(Vlien(B{3}==Valeur_indice1 )), '.')
    J’ai également pu filtrer mes données en fonction des valeurs de la colonnes 4 qui sont également des valeurs numériques.

    Le problème c’est que je cherche à poser des conditions sur les colonnes avec autre chose que des chiffres. Mais j'obtiens des erreurs...
    Alors j’ai essayer d’utiliser des fonctions comme strcmp pour remplacer le == mais je n’ai pas réussi à faire fonctionner. Cela me donne au mieux le numéro de la ligne dans le tableau B de toutes les occurrences.

    Malgré plusieurs tests, j’obtiens des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ??? Undefined function or variable...
    ou des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Undefined function or method 'eq' for input arguments of type
    'cell'.
    J’atteins là les limites de mes compétences et je pense avoir besoin de votre aide. Alors si quelqu’un à une idée, une suggestion ? je l’en remercie d’avance.

    A très bientôt, j’espère

    H.

  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
    Salut,

    tu nous as montré des morceaux de code de ce qui fonctionne, mais si tu veux que l'on t'aide il faut nous montrer ce qui ne fonctionne pas!

    Peux-tu nous montrer ce que tu as essayé de mettre comme condition, le résultat que tu espérais obtenir et le message d'erreur complet?

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 309
    Points : 52 895
    Points
    52 895
    Par défaut
    Je pense aussi que si tu nous fournissais un exemple de fichiers avec un nombre de valeurs réduite et si tu nous disais ce que tu souhaite obtenir en sortie, nous pourrions t'aider plus efficacement

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut PLOT/Extraction avec condition sur texte sans boucle Info supplémentaires
    Bonjour,

    Tout d’abord merci pour vos réponses. Effectivement j’aurais mieux fait de mettre directement les scipts qui ne marchent pas

    Pour rappel ce script marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    indice1=4;
    deb=12;
    fin=1000;
    figure;
    plot(FichierB{4}(FichierB{3}==indice1 & FichierB{4}>= deb & FichierB{4}<=fin),(FichierA (Vlien(FichierB{3}==indice1 & FichierB{4}>= deb & FichierB{4}<=fin))), '.')
    ce script me donne une figure comme je souhaite avoir dans un premier temps.

    Alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    description3='005w';
     
    figure;
    plot(FichierB{4}(FichierB{8}==description3 ),FichierA (Vlien(FichierB{8}==description3)), '.')
    me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ??? Undefined function or method 'eq'
    for input arguments of type 'cell'.
    Et la fenêtre des figures qui s’ouvre reste grise et vide ?

    En fait, j’aimerais pouvoir choisir les valeurs de mon FichierA à spoter en fonction des différentes valeurs du fichierB. Pour une ou plusieurs conditions sans avoir besoin de faire des boucles…et avec des condition sur des chaînes de caractères comme sur des nombres...

    Par la suite je souhaiterais les mettre dans un tableau surtout que je vais avoir plusieur fichierA (FichierA1, Fichier A2, Fichier A3…) pour lesquels ce serait génial de pouvoir enregistrer dans un tableau les valeurs de certains spots…. mais bon nous n'en somme pas là…pour l’instant je n’arrive pas sélectionner ce que je voudrais.


    j’ai essayé de travaillé sur ma description3 avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    description3=cellstr(description3) 
     
     
    mais le message  ??? Error using ==> cellstr at 34
    Input must be a string.
    J’ai l’impression que c’est une histoire de format… mais j’ai du mal trouver la solution…

    Alors si ces explications vous donnent de nouvelles idées je suis preneur, merci d’avance…

    A tres bientôt et encore merci pour le temps passé sur mes longs messages.


    PS :je joins des fichiers pour tester les scipts (j'ai dû les couper espérons que cela ne crée pas d'autres problèmes...)
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/08/2011, 18h05
  2. Somme.si avec condition sur le debut du texte
    Par Eric80 dans le forum Excel
    Réponses: 11
    Dernier message: 08/07/2007, 14h18
  3. Jointure avec conditions sur plusieurs colonnes
    Par ben53 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 28/11/2005, 09h27
  4. update avec condition sur autre table
    Par allowen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/04/2005, 15h02
  5. UPDATE avec condition sur d'autres tables
    Par guda dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/03/2005, 11h20

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