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 :

Lecture d'un entête au format texte


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Doctorant Mécanique des Fluides
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant Mécanique des Fluides

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Par défaut Lecture d'un entête au format texte
    Bonjour,

    Je reviens vers vous toujours pour un problème de traitement du texte lors de la lecture de fichier avec Matlab.

    J'ouvre un fichier comme celui-ci avec Matlab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       temps           DTMEAN          P(27,1,43)      AMM(1)          AMM(2)          AMM(3)          AMM(4)          AME(1)          AME(2)          AME(3)          AME(4)          DT()            DSAUTER()       FRONJET()      
      0.00000000E+00  0.10000000E-03  0.22000000E+06  0.49824601E+03  0.95015804E-01  0.28076911E-01  0.91361550E+02  0.43653336E+08  0.23085178E+06  0.42493001E+05  0.13827114E+09  0.10000000E-03  0.50000000E-02  0.22453124E+01
      0.11904119E-02  0.12452059E-03  0.21999128E+06  0.49824441E+03  0.95015853E-01  0.28076911E-01  0.91361289E+02  0.43653196E+08  0.23085190E+06  0.42493001E+05  0.13827074E+09  0.26130353E-03  0.50000000E-02  0.22453124E+01
      0.22793846E-02  0.16396923E-03  0.21998494E+06  0.49824294E+03  0.95015898E-01  0.28076911E-01  0.91361289E+02  0.43653068E+08  0.23085200E+06  0.42493001E+05  0.13827074E+09  0.42239417E-03  0.50000000E-02  0.22453124E+01
      0.33569012E-02  0.20784506E-03  0.21998067E+06  0.49824283E+03  0.95015901E-01  0.28076911E-01  0.91361289E+02  0.43653058E+08  0.23085201E+06  0.42493001E+05  0.13827074E+09  0.58179011E-03  0.50000000E-02  0.22453124E+01
    ... qui possède un entête dans lequel apparaît la grandeur de chaque colonne. J'arrive en manipulant la fonction fgetl à mettre cet entête dans une variable (VAR) et à rentrer les différentes colonnes de nombres dans un tableau.

    La variable VAR contenant l'entête est alors de type cell{1,1} :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VAR = 
    >>     temps           DTMEAN          P(27,1,43)      AMM(1)          AMM(2)          AMM(3)          AMM(4)          AME(1)          AME(2)          AME(3)          AME(4)          DT()            DSAUTER()       FRONJET()
    Mon problème c'est que je n'arrive pas à traiter cette cellule, et mettre chacun des termes la composant dans une colonne différente :

    Je voudrais au final un tableau de 1 ligne et N colonnes (ici N = 14, mais peut-être variable) contenant cet entête comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    VAR2(1,1) =
    >>    temps
    VAR2(1,2) = 
    >>    DTMEAN
    VAR2(1,3) = 
    >>    P(27,1,43)
     
    ...

    J'ai bidouillé avec pas mal de choses ( sscanf, ...), en vain.

    Est-ce que quelqu'un sait comment faire ?

    Merci d'avance,

  2. #2
    Membre averti
    Profil pro
    Doctorant Mécanique des Fluides
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant Mécanique des Fluides

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Par défaut
    J'ai finalement trouvé! Grâce à la fonction strtok.

    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fid = fopen('monfichier.dat');
    str = fgetl(fid);
     
    for i = 1:N
    [VAR{i},str] = strtok(str);
    end
     
    fclose(fid);
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VAR = 
        'temps'
        'DTMEAN'
         ...

  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 317
    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 317
    Par défaut
    Citation Envoyé par VinceL Voir le message
    J'ai finalement trouvé! Grâce à la fonction strtok.
    Avec les versions récentes de MATLAB (depuis la R2013a), tu peux aussi utiliser la fonction strsplit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fid = fopen('monfichier.dat', 'rt');
       str = fgetl(fid);
    fclose(fid);
     
    VAR = strsplit(str);

Discussions similaires

  1. [VBA-E] cellule au format texte a la creation d'une feuille
    Par julio84 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2006, 17h36
  2. [validation]Erreur format texte depuis BDD
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/02/2006, 19h49
  3. incrementation d'un format texte dans une zone de texte
    Par frederic.go dans le forum Access
    Réponses: 6
    Dernier message: 18/10/2005, 14h47
  4. [générale] PhP => flash format texte
    Par Destiny dans le forum Flash
    Réponses: 2
    Dernier message: 17/10/2005, 13h33
  5. CppUnit et la generation de rapport au format text
    Par xxiemeciel dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 03/10/2005, 22h08

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