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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 11
    Points : 5
    Points
    5

    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
    Ingénieur R&D freelance
    Inscrit en
    novembre 2006
    Messages
    19 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D freelance

    Informations forums :
    Inscription : novembre 2006
    Messages : 19 430
    Points : 51 662
    Points
    51 662

    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);
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et 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
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 11
    Points : 5
    Points
    5

    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
    Ingénieur R&D freelance
    Inscrit en
    novembre 2006
    Messages
    19 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D freelance

    Informations forums :
    Inscription : novembre 2006
    Messages : 19 430
    Points : 51 662
    Points
    51 662

    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
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et 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
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 11
    Points : 5
    Points
    5

    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
    Ingénieur R&D freelance
    Inscrit en
    novembre 2006
    Messages
    19 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D freelance

    Informations forums :
    Inscription : novembre 2006
    Messages : 19 430
    Points : 51 662
    Points
    51 662

    Par défaut

    À quoi correspondent les "-" dans certaines colonnes du fichier ?
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et 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
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 11
    Points : 5
    Points
    5

    Par défaut

    Ce sont des cases vides, sans données.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Ingénieur R&D freelance
    Inscrit en
    novembre 2006
    Messages
    19 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D freelance

    Informations forums :
    Inscription : novembre 2006
    Messages : 19 430
    Points : 51 662
    Points
    51 662

    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…
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et 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
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 11
    Points : 5
    Points
    5

    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: 1
    Dernier message: 18/04/2017, 14h56
  2. Difficultés pour importer du contenu VIRTUAL
    Par Daïmanu dans le forum Requêtes
    Réponses: 10
    Dernier message: 26/01/2017, 10h38
  3. Réponses: 11
    Dernier message: 07/03/2014, 08h48
  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, 15h22
  5. difficultés pour insérer et utiliser un tableau
    Par rorox dans le forum Delphi
    Réponses: 18
    Dernier message: 12/07/2006, 13h17

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