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 informations d'un fichier .txt (valeurs+informations)


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 101
    Points : 53
    Points
    53
    Par défaut Extraire informations d'un fichier .txt (valeurs+informations)
    Bonjour à tous,

    Je souhaite extraire les valeurs en rouge d'un fichier 'Test.txt'

    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
       
     Õâ minimization on Ä_r,Ä_i
     Õâ = 0.092212
     Iterations Number = 15
    
     Parameters
     1) L1 Thickness [nm]            = 94.344     ü   3.807
     2) L2 Thickness [nm]            =  3.131     ü   0.954
     3) L2 % ITO_(2L-D)_14-11-25.dsp = 41.95      ü 106.58
     4) ITO_(2L-D)_14-11-25  Äì      =  3.3616850 ü   0.1340348
     5) ITO_(2L-D)_14-11-25  Äs      =  2.4683200 ü   0.5268564
     6) ITO_(2L-D)_14-11-25  ×t      =  3.8609240 ü   0.1659209
     7) ITO_(2L-D)_14-11-25  ×p      =  1.2685870 ü   0.1114703
     8) ITO_(2L-D)_14-11-25  ¢ð      =  2.4000220 ü   0.3216354
     9) ITO_(2L-D)_14-11-25  ¢d      =  0.2456968 ü   0.1873222
     10)ITO_(2L-D)_14-11-25  fñ      =  1.9225770 ü   0.5552695
     11)ITO_(2L-D)_14-11-25  ×ðñ     =  5.2233250 ü   0.1590053
     12)ITO_(2L-D)_14-11-25  Âñ      =  3.0180400 ü   0.5440456
     13)ITO_(2L-D)_14-11-25  fò      =  0.0000000 ü 507.1194000
     14)ITO_(2L-D)_14-11-25  ×ðò     =  0.0000000 ü 507.1194000
     15)ITO_(2L-D)_14-11-25  Âò      =  0.0000000 ü 507.1194000
    
     Correlation matrix
    Comment faire vu que c'est un mélange de caractères et des valeurs ?

    J'ai essayé avec fscanf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    >> fid=fopen('Test.txt');
    >> Lignes=fscanf(fid,'%s\n');
    >> fclose(fid)
    Et ça me donne qu'une chaine de caractères : ÕâminimizationonÄ_r,Ä_iÕâ=0.092212IterationsNumber=15Parameters1)L1Thickness[nm]=94.344ü3.8072)L2T...

    Comment faire pour que ca puisse prendre au moins en compte le retour à la ligne ?

    J'ai réussi à faire des choses avec Scilab :
    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
    [fd,err]=mopen('Test.txt','r');
    // extraction des lignes
    Lignes=mgetl(fd,-1);
     
    // fermeture du fichier
    mclose(fd);
     
    // Suppression des espaces vides au début et à la fin
    Lignes=stripblanks(Lignes);
     
    //Cell=zeros(size(Lignes,1),7);
    //Chaine=[];
    Valeurs=zeros(size(Lignes,1)+1,5);
     
    for j=0:1:6
     
     
        Cell=strsplit(Lignes(4+j*54));
        Chaine=[Cell(5)+Cell(6)+Cell(7)+Cell(8)+Cell(9)+Cell(10)+Cell(11)+Cell(12)];
        Valeurs(1,1+j)=strtod(Chaine);
     
        for i=1:1:15
            Cell=strsplit(Lignes(7+i+j*54));
            Chaine=[Cell(35)+Cell(36)+Cell(37)+Cell(38)+Cell(39)+Cell(40)+Cell(41)+Cell(42)+Cell(43)+Cell(44)];
            Valeurs(i+1,1+j)=strtod(Chaine);
        end
     
    end
    Le problème est que Scilab est un peu limité pour les applications de ces valeurs. Je suis obligé de revenir sur Matlab mais je ne vois pas quelle fonction puis-je prendre...

    Merci d'avance pour vos réponses !!

  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 : 52 884
    Points
    52 884
    Par défaut
    Un début de réponse :

    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
    fid = fopen('Test.txt', 'rt');
     
    fgetl(fid);
    fgetl(fid);
     
    fscanf(fid, '%*s = %f\n')
     
    fgetl(fid);
    fgetl(fid);
    fgetl(fid);
     
    fscanf(fid, ' 1) L1 Thickness [nm]            = %f%*s%*f\n')
    fscanf(fid, ' 2) L2 Thickness [nm]            = %f%*s%*f\n')
    fscanf(fid, ' 3) L2 %% ITO_(2L-D)_14-11-25.dsp = %f%*s%*f\n')
    % etc
     
    fclose(fid);
    Ce qui renvoi :

    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
    ans =
     
        0.0922
     
     
    ans =
     
       94.3440
     
     
    ans =
     
        3.1310
     
     
    ans =
     
       41.9500
    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
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 101
    Points : 53
    Points
    53
    Par défaut
    Bonjour et merci Dut,

    Moi aussi je suis arrivé à cette conclusion. J'ai remarqué qu'à chaque fois que je met "Entrée" pour le code "fgetl" ou "fscanf", la lecteur passe à la ligne suivante.

    Il n'est pas possible de mettre "fgetl" ou "fscanf" en boucle ? Car la liste que je vous ai donné est qu'une fraction de la liste réelle et elle se répète.

    J'ai essayé de mettre un truc comme ca dans une boucle avec i représentant une ligne

    Mais ca ne marche pas. fgetl ou fscanf fait sortir quoi ? Une chaîne de caractère en une seule cellule ou plusieurs ?

    Merci d'avance !

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Citation Envoyé par la doc de fgetl
    tline = fgetl(fileID)
    ...
    ...tline is a text string unless the line contains only the end-of-file marker. In this case, tline is the numeric value -1.
    Donc étant donnée que la chaine de caractère peut être de longueur différente selon la ligne il faut utiliser un tableau de cellules :
    Mais je ne vois pas pourquoi tu veux stocker le texte dand un tableau.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. positionnement des informations dans un fichier txt
    Par moustaf_26 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 23/03/2012, 20h20
  2. [Débutant] Extraire mots d'un fichier txt
    Par fendry dans le forum MATLAB
    Réponses: 6
    Dernier message: 19/02/2012, 18h09
  3. VBS: extraire données d'un fichier txt
    Par silvermanu dans le forum VBScript
    Réponses: 3
    Dernier message: 12/04/2010, 14h00
  4. Extraire bloc d'un fichier txt
    Par jujusous3 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 09/12/2009, 16h09
  5. Réponses: 4
    Dernier message: 04/03/2008, 14h46

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