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 :

[uiimport] Difficultés pour importer un tableau


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut [uiimport] Difficultés pour importer un tableau
    Bonjour,

    Je souhaite importer un tableau qui se trouve dans fichier txt dans matlab.
    Voilà mon problème :

    J'ai deux tableaux de formes similaires en fichier texte, ils comportent du texte et des nombres.

    Quand j'importe le tableau 1 j'obtiens : 1 matrice "data" d'une seule colonne (je ne sais pas à quoi elle corrspond) ; 1 tableau de cellule "textdata" qui correspond à mon tableau txt ==> Tout va bien je peux travailler sur textdata.

    Quand j'importe le tableau 2 j'obtiens : 1 matrice "data" contenant une seule ligne de donnée; 1 tableau de cellules "textdata" contenant uniquement la première ligne de mon tableau; 1 tableau "collheaders" identique au précédent.

    Pourquoi dans le deuxième cas Matlab ne récupère pas la totalité du tableau dans "textdata" ?
    Sinon y a-t-il une alternative pour importer un fichier texte ?

    Je joins les tableau à mon message.
    Merci !
    Fichiers attachés Fichiers attachés

  2. #2
    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 165
    Points
    53 165
    Par défaut
    Voici comment lire proprement ces deux fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fid = fopen('Tableau 1.txt', 'r');
    X = textscan(fid, '%s%s%s%s%s%s%s%d%d%d%d%d%d%f%f%f%f%f%f%f%s%d', 'delimiter', '\t', 'headerlines', 1);
    fclose(fid);
     
    fid = fopen('Tableau 2.txt', 'r');
    Y = textscan(fid, '%s%s%f%f%f', 'delimiter', '\t', 'headerlines', 1);
    fclose(fid);
    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)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    désolé pour le délai je n'avais pas vu votre message.

    Merci pour votre réponse, je ne suis néanmoins pas parvenu à une solution.
    En utilisant votre code j'obtiens toujours un tableau 2 presque vide.
    Aussi, je perds la première ligne du tableau 1.

  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 165
    Points
    53 165
    Par défaut
    Pour récupérer l'entête des fichiers, tu peux faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fid = fopen('Tableau 1.txt', 'r');
    H = textscan(fid, '%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s', 1, 'delimiter', '\t', 'CollectOutput', true);
    X = textscan(fid, '%s%s%s%s%s%s%s%d%d%d%d%d%d%f%f%f%f%f%f%f%s%d', 'delimiter', '\t', 'headerlines', 1);
    fclose(fid);
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fid = fopen('Tableau 1.txt', 'r');
    H = textscan(fid, '%s', 22, 'delimiter', '\t');
    X = textscan(fid, '%s%s%s%s%s%s%s%d%d%d%d%d%d%f%f%f%f%f%f%f%s%d', 'delimiter', '\t', 'headerlines', 1);
    fclose(fid);
    Pour le fichier 2, en utilisant le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fid = fopen('Tableau 2.txt', 'r');
    H = textscan(fid, '%s', 5, 'delimiter', '\t');
    X = textscan(fid, '%s%s%f%f%f', 'delimiter', '\t', 'headerlines', 1);
    fclose(fid);
    MATLAB renvoi bien :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    >> H{1}
     
    ans = 
     
        'Subject'
        'Color'
        'Deviation X [°]'
        'Deviation Y [°]'
        'Tracking Ratio [%]'
     
    >> X{1}
     
    ans = 
     
        '0'
        'essai'
        'essaim'
        'h'
     
    >> X{2}
     
    ans = 
     
        'Crimson'
        'CornflowerBlue'
        'Coral'
        'Cyan'
     
    >> X{3}
     
    ans =
     
        0.4000
        0.8000
        0.4000
        4.2000
     
    >> X{4}
     
    ans =
     
        0.6000
        2.8000
        0.2000
        1.8000
     
    >> X{5}
     
    ans =
     
       99.4000
      100.0000
      100.0000
       61.7000
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci pour l'en-tête.

    Pour ce qui est du tableau j'ai fait une erreur, j'ai tellement de tableau que j'ai uploadé le mauvais.
    Le tableau que je n'arrive pas à lire est celui que je joins à ce message.
    Au temps pour moi. Tableau 3.txt

  6. #6
    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 165
    Points
    53 165
    Par défaut
    À quoi correspondent les "-" dans certaines colonnes du fichier ?
    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)

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Ce sont des cases vides, sans données.

  8. #8
    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 165
    Points
    53 165
    Par défaut
    Il faut donc les remplacer par la valeur NaN, lisible par MATLAB.

    Tu peux te servir de la fonction strrepInFile

    Voici le code corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    strrepInFile('Tableau 3.txt', '-', 'NaN')
     
    fid = fopen('new_Tableau 3.txt', 'r');
    H = textscan(fid, '%s', 30, 'delimiter', '\t');
    X = textscan(fid, '%s%s%s%s%s%s%s%d%d%d%d%d%d%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f', 'delimiter', '\t', 'headerlines', 1);
    fclose(fid);
    Le code ci-dessus ne fonctionne pas si il y a des valeurs négatives dans le fichier…
    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)

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Heureusement pour moi les tableaux à modifier avec la fonction strrepInFile ne comportent pas de nombres négatifs (temps et pourcentages).

    Merci pour le temps que vous m'avez accordé, je peux enfin continuer à écrire mon programme.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 01/07/2020, 14h03
  2. Difficulté pour travaillé un tableau ou un objet en Javascript
    Par juju742 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/04/2017, 13h56
  3. Difficultés pour importer du contenu VIRTUAL
    Par Daïmanu dans le forum Requêtes
    Réponses: 10
    Dernier message: 26/01/2017, 09h38
  4. [Débutant] Problème pour importer un tableau d'un fichier texte
    Par cedji dans le forum MATLAB
    Réponses: 16
    Dernier message: 29/05/2013, 14h22
  5. difficultés pour insérer et utiliser un tableau
    Par rorox dans le forum Delphi
    Réponses: 18
    Dernier message: 12/07/2006, 12h17

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