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

Octave Discussion :

Récupérer des données sur un fichier txt


Sujet :

Octave

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut Récupérer des données sur un fichier txt
    Bonjour,

    Alors je suis nouvelle sur le forum et je débute sur matlab .

    Voilà le problème que je n’arrive pas à résoudre :

    J’ai un fichier txt à ma disposition tel que celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MNTPFILE 1 9
    MORPHEE 2
    Datum	Uhrzeit	N_MOT	M_MOT	KRST	T_Wtr_Ei	T_WA	T_OIL	T_Air_Amb	T_Air_Int	T_Air_ICi	R_EN.TLL	T_Exh_TCi	T_Exh_TCo	P_LUFT	pr_Air_Int	pr_Air_ICi	pr_Air_ICo	pr_Exh_TCi	pr_Exh_TCo	P_OIL
    ?	?	rpm	Nm	kg/h	?	?	?	?	?	?	?	?	?	mbar	bar	bar	bar	bar	bar	bar
    19-09-14	08:48:31.1807	1798	90.8	4.68	79.8	84.8	86.7	25.5	26.7	43.9	23.6	655.2	557.3	979	0.000	0.153	0.005	0.169	0.025	1.834
    19-09-14	08:48:31.2807	1799	90.4	4.68	79.8	84.8	86.7	25.5	26.7	43.9	23.6	655.1	557.3	979	0.000	0.154	0.003	0.213	0.025	1.833
    19-09-14	08:48:31.3807	1800	90.2	4.67	79.8	84.8	86.7	25.5	26.7	43.9	23.6	655.1	557.3	979	0.000	0.156	0.005	0.134	0.025 1.833
    Comme le fichier ne s'affiche pas correctement, je l'ai mis en pièce jointe.

    Ce que je dois faire c’est récupère les valeurs de .txt et les mettre dans un fichier .mat pour pouvoir les exploiter par la suite. A la limite les titres des colonnes je m’en fiche, je veux juste les valeurs.

    Ce que j’ai fait pour le moment, c’est essayer d’appliquer cette méthode : http://www.tutorialspoint.com/matlab...ata_import.htm

    Mais ça ne marche pas car j’ai trop de variable, au moins une centaine par colonne et environ un vingtaine de colonnes .

    J’ai également essaye de convertir le fichier .txt en .mat mais quand je l’ouvre (le .mat) il n y a rien dedans…
    Comment puis-je récupérer les valeurs de mon fichier txt ?

    Et où est-il possible de convertir le fichier .txt en .mat ? Si oui comment ?

    Merci.

    Bonne journée.

    PS : pour ce qui se demande c’est quoi mon fichier, ce sont les résultats d’un moteur passé au banc.
    Fichiers attachés Fichiers attachés

  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 : 34
    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
    Par défaut
    Bonjour,

    si tu effectues la commande importdata tu obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    toto = importdata('Test.txt')
     
    toto = 
     
            data: [102x19 double]
        textdata: {106x21 cell}
    Tu as une partie de tes données dans toto.data (qui sont les données numériques) et dans toto.textdata tu as les dates, les noms des colonnes, l'heure... Tu peux donc récupérer ce qui t'intéresses. (les valeurs numériques sont remplacées par des ' ' dans toto.textdata)

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut
    J’ai tapé ton code et j’ai dû le modifier car il y avait plusieurs erreurs lors de l’exécution.

    Voilà celui que j’ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    delimiterIn = '1';
    headerlinesIn = 5;
     
    toto = importdata('Test.txt',delimiterIn,headerlinesIn)
     
    toto.data: ['107x21' double(1)]
    toto.textdata: {'106x21' char(1)}
    save('Test.mat','toto');
    Aucune valeur ne correspond au fichier txt et il n y a plus que 9 colonnes…pourquoi ? Ou est-ce que je me suis trompé ?

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

    Chacune des colonnes est séparée par une tabulation et non par le chiffre 1 delimiterIn = '\t';.
    et il n'y a que 4 lignes d'en-tête headerlinesIn = 4;.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut
    Bonjour,

    Merci sa marche .

    J'ai remarqué qu'en changeant la valeur de double il ne me copie pas les choses de la même façon. Quand je met double(0), il me copie exactement le fichier txt avec la même mise en page. Si je met double(1), il me copie toutes les valeurs que j'ai besoin mais de cette façon :

    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
    1798 90.8 4.68 79.8 84.8 86.7 25.5 26.7 43.9 23.6 655.2 557.3 979 0 0.153 0.005 0.169 0.025 1.834
     1799 90.40000000000001 4.68 79.8 84.8 86.7 25.5 26.7 43.9 23.6 655.1 557.3 979 0 0.154 0.003 0.213 0.025 1.833
     1800 90.2 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 655.1 557.3 979 0 0.156 0.005 0.134 0.025 1.833
     1799 90 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.9 557.2 979 0 0.154 0.002 0.164 0.024 1.833
     1800 90.09999999999999 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.8 557.2 979 0 0.153 0.007 0.155 0.024 1.833
     1800 90.3 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.8 557.2 979 0 0.154 0.004 0.058 0.025 1.833
     1800 90.5 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.7 557.2 979 0 0.157 0.006 0.057 0.025 1.833
     1800 90.59999999999999 4.66 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.7 557.2 979 0 0.153 0.004 0.14 0.025 1.833
     1801 90.5 4.66 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.7 557.2 979 0 0.154 0.008999999999999999 0.167 0.026 1.834
     1800 90.59999999999999 4.66 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.7 557.2 979 0 0.154 0.001 0.167 0.025 1.833
     1800 90.40000000000001 4.66 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.7 557.2 979 0 0.153 0.007 0.231 0.025 1.834
     1801 90.5 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.8 557.2 979 0 0.154 0.003 0.134 0.025 1.833
     1801 90.5 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.9 557.2 979 0 0.155 0.008 0.194 0.024 1.833
     1800 90.8 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 654.9 557.2 979 0 0.153 0.005 0.152 0.024 1.832
     1799 90.90000000000001 4.67 79.8 84.8 86.7 25.5 26.7 43.9 23.6 655.1 557.3 979 0 0.154 0.006 0.059 0.024 1.833
     1801 90.8 4.67 79.8 84.8 86.7 25.5 26.8 43.9 23.6 655.3 557.3 979 0 0.156 0.004 0.08699999999999999 0.025 1.833
     1800 90.7 4.68 79.8 84.8 86.7 25.5 26.8 43.9 23.6 655.3 557.3 979 0 0.155 0.007 0.135 0.025 1.834
     1800 90.5 4.68 79.8 84.8 86.7 25.5 26.7 43.9 23.6 655.5 557.4 979 0 0.154 0.002 0.157 0.025 1.833
     1800 90.59999999999999 4.68 79.8 84.8 86.59999999999999 25.5 26.7 43.9 23.6 655.5 557.4 979 0 0.155 0.007 0.195 0.025 1.834
     1800 90.59999999999999 4.68 79.8 84.8 86.59999999999999 25.5 26.7 43.9 23.6 655.7 557.4 979 0 0.157 0.003 0.296 0.026 1.833
    Pourquoi j'ai certains nombre avec plus de 10 chiffres significatif aprés la virgule alors que sur le fichier txt, il n'y en a que 1 ?

    Qu'est-ce que je modifier ?

    Par ailleurs quand je sauvegarde toto dans Test.mat, il y a toujours les dates et les 4 premieres lignes qui me servent à rien a la fin de cette sorte :
    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
    # name: textdata
    # type: cell
    # rows: 208
    # columns: 1
    # name: <cell-element>
    # type: sq_string
    # elements: 1
    # length: 12
    MNTPFILE 1 9
     
     
    # name: <cell-element>
    # type: sq_string
    # elements: 1
    # length: 9
    MORPHEE 2
     
     
    # name: <cell-element>
    # type: sq_string
    # elements: 1
    # length: 177
    Datum	Uhrzeit	N_MOT	M_MOT	KRST	T_Wtr_Ei	T_WA	T_OIL	T_Air_Amb	T_Air_Int	T_Air_ICi	R_EN.TLL	T_Exh_TCi	T_Exh_TCo	P_LUFT	pr_Air_Int	pr_Air_ICi	pr_Air_ICo	pr_Exh_TCi	pr_Exh_TCo	P_OIL
     
     
    # name: <cell-element>
    # type: sq_string
    # elements: 1
    # length: 62
    ?	?	rpm	Nm	kg/h	?	?	?	?	?	?	?	?	?	mbar	bar	bar	bar	bar	bar	bar
    etc etc ...comment je peux les enlever ?

  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 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
    Une solution alternative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    fid = fopen('TEST.TXT', 'r');
     
    X = textscan(fid, '%*s%*s%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f', ...
        'headerlines', 4, ...
        'delimiter', '\t', ...
        'collectoutput', true);
     
    fclose(fid);
     
    X = X{1};
     
    save('TEST.mat', 'X')

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2010, 19h42
  2. Réponses: 8
    Dernier message: 11/06/2010, 15h11
  3. Réponses: 2
    Dernier message: 16/01/2006, 19h34
  4. Récupérer des données sur une page HTML
    Par rupeni dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/11/2005, 17h22
  5. Réponses: 7
    Dernier message: 29/09/2005, 10h19

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