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 :

Extraire données d'un fichier texte


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 149
    Points : 59
    Points
    59
    Par défaut Extraire données d'un fichier texte
    Bonjour,

    j'ai en ma possession un fichier .txt de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'lettres'('nbr_inutile'){'nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile'}
    'lettres'('lettres','nombre'){ 'nbr_inutile'}
      {1,'nombre_x','nombre_y','nombre_z','nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile'}
      {2,'nombre_x','nombre_y','nombre_z','nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile'}
      {3,'nombre_x','nombre_y','nombre_z','nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile'}
      {4,'nombre_x','nombre_y','nombre_z','nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile'}
       ...
    'lettres'{'lettres','nbr_inutile'}
    A cause de la confidentialité de mon fichier j'ai mis des 'nombre' et des 'lettres'. Les '...' signifient qu'il y a plein d'autres lignes identiques à la précédente. Ce fichier comporte les coordonnées x, y et z de 'n' points expérimentaux mesurés.
    Les 2 premières lignes ne me sont pas utiles, tout comme la dernière. On retrouve les 'n' points expérimentaux à partir de la troisième ligne jusqu'à l'avant-dernière. J'aimerais créer une matrice (3 lignes pour x, y et z et n colonnes pour le nombre de points) à partir de ce fichier, en la complétant par les 'nombre_x', 'nombre_y' et 'nombre_z' du fichier, chaque ligne du fichier texte (à partir de la ligne 3) correspondra donc à chaque colonne de la matrice sous Matlab.

    J'aimerais me baser sur les '{' et virgules du fichier pour m'y repérer dans la lecture sous Matlab. Si vous pouvez m'éclairer sur les fonctions à utiliser, sans forcément me donner la solution mais en m'expliquant, ça serait top .

    Merci d'avance !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Les guillemets 'nombre_x' sont-ils réellement présents ?
    Tu peux déjà te tourner vers la fonction textscan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fid = fopen('file.txt', 'rt');
    data = textscan(fid, ' {%*d,%n,%n,%n,%*[^\n]', 'CollectOutput', true, 'HeaderLines', 2); % sans guillemets
    data = textscan(fid, '{%*d,''%n'',''%n'',''%n'',%*[^\n]', 'CollectOutput', true, 'HeaderLines', 2); % avec
    fclose(fid);
    data{1}.'
    1
    2
    ...
    nombre_x nombre_y nombre_z 'nbr_inutile','nbr_inutile','nbr_inutile','nbr_inutile'}
    %*d %n %n %n %*[^\n]
    nombres entiers %d que l'on ignore %*d nombres réels, ce n'est peut-être pas le cas, et le format sera alors à adapter Tout caractère qui n'est pas un retour à la ligne %[^\n], partie que l'on ne souhaite pas non plus récupérer %*[^\n]
    Le paramètre CollectOutput à true permet de réunir les parties adjacentes de même type (ici les les trois %n) dans un seul tableau Nx3 plutôt que trois cellules de N valeurs.
    Le paramètre HeaderLines à 2 parle de lui-même : il permet de sauter les deux premières lignes.
    Enfin la lecture s'arrêtera d'elle même lorsque la fonction atteindra la dernière ligne qui ne matche pas le format.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 149
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup ! C'est exactement ce qu'il me fallait !

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

Discussions similaires

  1. extraire données d'un fichier texte
    Par julien0000 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/07/2008, 16h27
  2. Réponses: 2
    Dernier message: 22/06/2008, 15h41
  3. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 15h01
  4. Extraire des donnés d'un fichier texte
    Par sadsad dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2006, 15h09
  5. extraire certaines données d'un fichier texte
    Par davz88 dans le forum C++
    Réponses: 11
    Dernier message: 26/03/2005, 13h00

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