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 :

Distinction de variables [Débutant]


Sujet :

MATLAB

  1. #1
    Membre régulier
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 71
    Points
    71
    Par défaut Distinction de variables
    Bonjour à tous,
    je suis face à un problème, alors je vous explique:

    j'ai ce tableau ( juste un exemple)

    variable valeur
    X_nord 3
    Y_nord 45
    X_sud 12
    Y_sud 0.1
    X_est 0.56
    Y_est 1.36
    X_ouest
    Y_ouest
    0.2
    23

    je veux obtenir ceci:
    x y
    nord 3 45
    sud 12 0.1
    est 0.56 1.36
    ouest 0.2 23
    une idée de comment faire??
    merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Une première question: Le tableau est-il rangé dans un ordre prédéfini? (X_toto est il toujours suivi de Y_toto?)

    Une deuxième question: As-tu déjà écrit quelques lignes de codes ou n'as tu aucune idée de comment procéder?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Membre régulier
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 71
    Points
    71
    Par défaut
    Première réponse: NON ce n'est pas toujour le cas. La c'est juste un exemple, mon vrai fichier contient quelques centaines de variables.
    Deuxième réponse: je n'ai aucune idée de comment proceder.
    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    La question n'est pas claire et manque de précision.

    Il serait sans doute plus judicieux de nous fournir un exemple de fichier contenant les données de départ.

    Que souhaites-tu obtenir en sortie ? Un autre fichier texte ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Scientific consultant in spatial remote sensing
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Scientific consultant in spatial remote sensing
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Que veux-tu dire par "j'ai ce tableau"? C'est dans un fichier? Ou bien ce sont des variables matlab?

  6. #6
    Membre régulier
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 71
    Points
    71
    Par défaut
    le tableau de depart est un fichier Excel, je le ramene sous matlab, ce que je veux c'est que a partir des données de depart j'obtiens les trois vecteurs( ou matrice) je ne sais pas comment appeler ça, à savoir d'aun coté ma variable ( nord, sud, est, ouest) et d'un autre x( avec ses valeurs) et y (avec ses valeurs).
    merci

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    C'est assez nébuleux, à quoi ressemble ce tableau concrètement? quel est son datatype sous MATLAB?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  8. #8
    Membre à l'essai
    Homme Profil pro
    Scientific consultant in spatial remote sensing
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Scientific consultant in spatial remote sensing
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Oui par ce qu'on ne sais pas si tes 'X_nord' et autres sont des chaines de caractères ou des noms de variables ou encore les champs d'une structure

  9. #9
    Membre régulier
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 71
    Points
    71
    Par défaut
    c'est des chaines de caractères voila a quoi ressemble ( je m'excuse de ne pas pouvoir vous montrez toute les données car c'est dans le cadre de mon stage et elles sont confidentielles), j'espere que c'est un peu plus clair
    'MFCDTA_0140E6RESI2NS1ATTE3M1TAT' 12
    'MTEDTA_0070E6RESI2NS1ATTE3M1TAT' 0.1
    'MFCDTA_0070E6RESI2NS1ATTE3M1TAT' 89
    'MTEDTA_01406RESI2NS1ATTE3M1TAT' 0.23

    et moi je veux avoir
    MFCDTA MTEDTA
    '_0140E6RESI2NS1ATTE3M1TAT' 12 89
    '_0070E6RESI2NS1ATTE3M1TAT' 0.23 0.1

  10. #10
    Membre éprouvé
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Points : 1 146
    Points
    1 146
    Par défaut
    Tu peux essayer ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fid=fopen('Fichier.txt','r');
    CFile = textscan(fid,'%s %f');
     
    Variable=char(CFile{1}(:));
    Xi=Variable(:,1)=='X';
    Yi=~Xi;
    VariableX=Variable(Xi,3:end); % VariableY=Variable(Yi,3:end);
    X=CFile{2}(Xi);
    Y=CFile{2}(Yi);
    Si tu trouves ma réponse utile, n'oublies pas de voter pour ce me message

  11. #11
    Membre régulier
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 71
    Points
    71
    Par défaut
    Merci Soft001 pour ta réponse,
    Le fait que mon fichier est un Excel..... ça donne quoi?

  12. #12
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Le fait que mon fichier est un Excel..... ça donne quoi?
    Si c'est un csv, fopen devrait y arriver.
    Si c'est un classeur xls, il faut soit extraire la feuille d'intérêt dans un csv séparé, soit passer par xlsread plutot que fopen

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par matlabation Voir le message
    et moi je veux avoir
    MFCDTA MTEDTA
    '_0140E6RESI2NS1ATTE3M1TAT' 12 89
    '_0070E6RESI2NS1ATTE3M1TAT' 0.23 0.1
    Tu veux ces données dans MATLAB ou bien dans une nouvelle feuille Excel ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  14. #14
    Membre régulier
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Dut Voir le message
    Tu veux ces données dans MATLAB ou bien dans une nouvelle feuille Excel ?
    dans matlab

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Une version vite faite et pas du tout optimisée :

    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
    [num,txt] = xlsread('test.xlsx', 'Feuil1', 'A1:B4', 'basic');
     
    subtxt = cellfun(@(x) x(7:end), txt, 'uniformoutput', false);
    [~,idx] = sort(subtxt);
     
    txt = txt(idx);
    num = num(idx);
     
    kF = 1;
    kT = 1;
     
    for n = 1:numel(txt)
        if strncmp(txt{n}, 'MFCDTA_', 7)
            MFCDTA(kF,1) = num(n);
            kF = kF+1;
        else
            MTEDTA(kT,1) = num(n);        
            kT = kT+1;
        end
    end
     
    rowNames = unique(subtxt);
     
    T = table(MFCDTA, MTEDTA, 'RowNames', rowNames)
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    T = 
     
                                     MFCDTA    MTEDTA
                                     ______    ______
     
        _0070E6RESI2NS1ATTE3M1TAT    89         0.1  
        _0140E6RESI2NS1ATTE3M1TAT    12        0.23
    Il est possible de se contenter des trois vecteurs MFCDTA, MTEDTA et rowNames sans avoir besoin de construire la variable T
    Fichiers attachés Fichiers attachés
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  16. #16
    Membre éprouvé
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Points : 1 146
    Points
    1 146
    Par défaut
    Tu peux regarder ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [CFileNum,CFileVariable] = xlsread('Fichier.xlsx');
     
    Variable=char(CFileVariable);
    i_MFCDTA=Variable(:,2)=='F';
    i_MTEDTA=~i_MFCDTA;
    Variable_MFCDTA=Variable(i_MFCDTA,7:end);
    Variable_MTEDTA=Variable(i_MTEDTA,7:end);
    MFCDTA=CFileNum(i_MFCDTA);
    MTEDTA=CFileNum(i_MTEDTA);
    Si tu trouves ma réponse utile, n'oublies pas de voter pour ce me message

  17. #17
    Membre régulier
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 71
    Points
    71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> {~,idx} = sort(subtxt);
    ??? {~,idx} = sort(subtxt);
          |
    Error: Expression or statement is incorrect--possibly unbalanced (, {, or [.
    voila l'erreur que Matlab m'affiche

  18. #18
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    A priori, en comparant avec le code de Dut, c'est parce que tu as utilisé { au lieu de [ et } au lieu de ]
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  19. #19
    Membre régulier
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par soft001 Voir le message
    Tu peux regarder ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [CFileNum,CFileVariable] = xlsread('Fichier.xlsx');
     
    Variable=char(CFileVariable);
    i_MFCDTA=Variable(:,2)=='F';
    i_MTEDTA=~i_MFCDTA;
    Variable_MFCDTA=Variable(i_MFCDTA,7:end);
    Variable_MTEDTA=Variable(i_MTEDTA,7:end);
    MFCDTA=CFileNum(i_MFCDTA);
    MTEDTA=CFileNum(i_MTEDTA);
    voila ce que Matlab m'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MTEDTA=Num(i_MTEDTA);
    ??? Index exceeds matrix dimensions.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Scientific consultant in spatial remote sensing
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Scientific consultant in spatial remote sensing
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    C'est lié à ta version de matlab. Remplace le ~ par une variable quelconque que tu n'utiliseras pas.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2010, 14h29
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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