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 :

Ouverture d’un fichier contenant des jeux de données


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut Ouverture d’un fichier contenant des jeux de données
    Bonjour,
    J’ai un souci, je dois pour la fac ouvrir 224 fichiers. Chacun de ces fichiers possède une entête variable en nombre de ligne mais commençant toujours par #. J’ai cherché à les ouvrir avec quelque chose du style : comment style via un textread. Néanmoins je n’arrive pas à obtenir un résultat convaincant. Notamment sur le fait qu’il faudrait les ouvrir je pense avec une boucle que je n’arrive pas à mettre en place.

    Est-ce que quelqu’un aurait une idée.

    Merci d’avance
    Thomas

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut Infos complémentaires
    Voici ce que j'ai utilisé comme commande pour tester déjà sur un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('C:\Users\Thinkpad x230i\Documents\DATA\R_con_uel_env_0543_02_20021019T200844_20091226T195730', '%s %s %s %f %f %s %s','hearderlines',1,'commentstyle','#','delimiter',';');
    et voici un C/C d'une partie d'un des fichiers que je dois ouvrir :

    lake=bangweulu;country=Zambia;basin=Congo;lat=-11.17;lon=29.81;date=2017.237;first_date=2000.070;last_date=2015.136;type=research;diff=public
    #
    # Length: 70   km
    # width:   36 km
    # maximum of depth:   10 m
    # Mean area: 1510   km2
    # Catchment area: --      km2
    # Mean volume:  5    km3
    #
    # Water height from satellite altimetry:
    # gfo              track number:  472
    # envisat          track number:  371
    # cryosat2         no track number
    #
    # corrections applied: Solid Earth tide, pole tide, ionospheric delay
    # wet and dry tropospheric delay, altimeter biaises
    #
    # surface of reference: GGMO2C; high resolution global gravity model
    # developped to degree and order 200 at CSR
    # Center for Space research, university of Texas, austin, USA
    # ref: Tapley B, Ries J, Bettatpur S, et al., (2005),
    # GGM02 - an improved Earth Gravity field from GRACE, J.geod. 79: 467-478
    #
    # first date: 2000  1 26 yr month day 14.0 hours 52 minutes
    # last date: 2015  2  19 yr month day  0.0 hours 14 minutes
    #
    # data file format
    # (1): decimal year (2) date = yyyy/mm/dd (3): time = hh:mm
    # (4): height above surface of ref (m), (5): standard deviation from height (m)
    # (6): area (km2), (7): volume with respect to volume of first date (km3)
    # (8): flag
    #
    # The water level, surface and volume algorithm developed at Legos, Toulouse, France
    #
    # citation: Cretaux J-F., Jelinski W., Calmant S., et al., 2011.
    # SOLS: A lake database to monitor in the Near Real Time water level
    # and storage variations from remote sensing data, Advances in space Research, 47, 1497-1507
    #
    2000.0700 ; 2000/01/26 ; 14:52 ;  1164.73 ;     0.06 ; 9999.999 ; 9999.999 ;  ; 
    2000.1500 ; 2000/02/24 ; 21:36 ;  1164.83 ;     0.12 ; 9999.999 ; 9999.999 ;  ; 
    2000.2100 ; 2000/03/17 ; 20:38 ;  1165.09 ;     0.04 ; 9999.999 ; 9999.999 ;  ; 
    2000.3000 ; 2000/04/19 ; 19:11 ;  1165.27 ;     0.03 ; 9999.999 ; 9999.999 ;  ; 
    2000.3700 ; 2000/05/15 ; 10:04 ;  1165.18 ;     0.08 ; 9999.999 ; 9999.999 ;  ; 
    2000.4400 ; 2000/06/10 ; 00:57 ;  1165.47 ;     0.12 ; 9999.999 ; 9999.999 ;  ; 
    2000.6200 ; 2000/08/14 ; 22:04 ;  1164.81 ;     0.08 ; 9999.999 ; 9999.999 ;  ; 
    2000.7200 ; 2000/09/20 ; 12:28 ;  1164.58 ;     0.03 ; 9999.999 ; 9999.999 ;  ; 
    2000.7900 ; 2000/10/16 ; 03:21 ;  1164.36 ;     0.05 ; 9999.999 ; 9999.999 ;  ; 
    2000.8800 ; 2000/11/18 ; 01:55 ;  1164.17 ;     0.13 ; 9999.999 ; 9999.999 ;  ; 
    ...

  3. #3
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    et quel problème rencontre tu ?
    (en quoi n'est ce pas convainquant ?)

  4. #4
    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 882
    Points
    52 882
    Par défaut
    Exécutons le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730', '%s %s %s %f %f %s %s','hearderlines',1,'commentstyle','#','delimiter',';');
    MATLAB renvoie le message d'erreur :

    Error using dataread
    Invalid comment style.
    
    Error in textread (line 174)
    [varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>
    Si on lis la documentation de la fonction textread, on remarque que la propriété commenstyle prend les valeurs matlab (%), shell (#), c (/**/), ou c++ (//)

    En remplaçant '#' par 'shell' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730', '%s %s %s %f %f %s %s','hearderlines',1,'commentstyle','shell','delimiter',';');
    MATLAB renvoie le message d'erreur :

    Error using dataread
    Unknown option 'hearderlines'.
    
    Error in textread (line 174)
    [varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>
    Il y a un r en trop dans le nom de la propriété headerlines

    En corrigeant cette coquille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730', '%s %s %s %f %f %s %s','headerlines',1,'commentstyle','shell','delimiter',';');
    Le code ne renvoie plus d'erreur.

    Par contre, les valeurs renvoyées ne sont pas parfaites :
    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
    Year = 
     
        '2000.0700 '
        ''
        '2000.1500 '
        ''
        '2000.2100 '
        ''
        '2000.3000 '
        ''
        '2000.3700 '
        ''
        '2000.4400 '
        ''
        '2000.6200 '
        ''
        '2000.7200 '
        ''
        '2000.7900 '
        ''
        '2000.8800 '
        ''
    Regardons le format de plus près : '%s %s %s %f %f %s %s'. Tu utilises '%s' pour extraire des chaines de caractères et '%f' pour extraire des valeurs numériques. Mais en analysant le contenu des colonnes j'écrirais plutôt : '%f %s %s %f %f %f %f' non ? Voire sans les espaces inutiles : '%f%s%s%f%f%f%f'Essayons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730','%f%s%s%f%f%f%f','headerlines',1,'commentstyle','shell','delimiter',';');
    Renvoie :

    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
    Year =
     
       1.0e+03 *
     
        2.0001
             0
        2.0002
             0
        2.0002
             0
        2.0003
             0
        2.0004
             0
        2.0004
             0
        2.0006
             0
        2.0007
             0
        2.0008
             0
        2.0009
             0
    On remarque toujours les valeur intercalées. Tu demandes à lire 7 valeurs par ligne alors qu'il y a 8 colonnes (8 fois le séparateur ;) avec la dernière colonne vide.

    On va donc demander à textread de lire une dernière valeur sur chaque ligne sans la stocker avec le marqueur * :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730','%f%s%s%f%f%f%f%*f','headerlines',1,'commentstyle','shell','delimiter',';');
    Ce qui renvoie :

    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
    >> Year
     
    Year =
     
       1.0e+03 *
     
        2.0001
        2.0002
        2.0002
        2.0003
        2.0004
        2.0004
        2.0006
        2.0007
        2.0008
        2.0009
     
    >> Date
     
    Date = 
     
        '2000/01/26 '
        '2000/02/24 '
        '2000/03/17 '
        '2000/04/19 '
        '2000/05/15 '
        '2000/06/10 '
        '2000/08/14 '
        '2000/09/20 '
        '2000/10/16 '
        '2000/11/18 '
    C'est nettement mieux.
    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)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par le fab Voir le message
    salut

    et quel problème rencontre tu ?
    (en quoi n'est ce pas convainquant ?)
    Je pense que Jerome Briot a repondu avec "brio" mon premier problème.
    Merci le Fab d'avoir pris le temps de regarder

    Thomas

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Jerome Briot Voir le message
    Exécutons le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730', '%s %s %s %f %f %s %s','hearderlines',1,'commentstyle','#','delimiter',';');
    MATLAB renvoie le message d'erreur :

    Error using dataread
    Invalid comment style.
    
    Error in textread (line 174)
    [varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>
    Si on lis la documentation de la fonction textread, on remarque que la propriété commenstyle prend les valeurs matlab (%), shell (#), c (/**/), ou c++ (//)

    En remplaçant '#' par 'shell' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730', '%s %s %s %f %f %s %s','hearderlines',1,'commentstyle','shell','delimiter',';');
    MATLAB renvoie le message d'erreur :

    Error using dataread
    Unknown option 'hearderlines'.
    
    Error in textread (line 174)
    [varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>
    Il y a un r en trop dans le nom de la propriété headerlines Bravo pour avoir vu cela ... je reste encore fébrile sur l'utilisation des commandes et leur orthographe

    En corrigeant cette coquille :

    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730', '%s %s %s %f %f %s %s','headerlines',1,'commentstyle','shell','delimiter',';');

    Le code ne renvoie plus d'erreur.

    Par contre, les valeurs renvoyées ne sont pas parfaites :
    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
    Year = 
     
        '2000.0700 '
        ''
        '2000.1500 '
        ''
        '2000.2100 '
        ''
        '2000.3000 '
        ''
        '2000.3700 '
        ''
        '2000.4400 '
        ''
        '2000.6200 '
        ''
        '2000.7200 '
        ''
        '2000.7900 '
        ''
        '2000.8800 '
        ''
    Regardons le format de plus près : '%s %s %s %f %f %s %s'. Tu utilises %s pour extraire des chaines de caractères et '%f' pour extraire des valeurs numériques. Mais en analysant le contenu des colonnes j'écrirais plutôt : '%f %s %s %f %f %f %f' non ? Voire sans les espaces inutiles : '%f%s%s%f%f%f%f' C'est que dans mon esprit %f était plus pour des chiffres avec décimales et %s pour des infos dont je n'ai pas vraiment besoin pour mon traitement

    Essayons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730','%f%s%s%f%f%f%f','headerlines',1,'commentstyle','shell','delimiter',';');
    Renvoie :

    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
    Year =
     
       1.0e+03 *
     
        2.0001
             0
        2.0002
             0
        2.0002
             0
        2.0003
             0
        2.0004
             0
        2.0004
             0
        2.0006
             0
        2.0007
             0
        2.0008
             0
        2.0009
             0
    On remarque toujours les valeur intercalées. Tu demandes à lire 7 valeurs par ligne alors qu'il y a 8 colonnes (8 fois le séparateur avec la dernière colonne vide. Bien vu aussi. Je compte tout le temps les colonnes et pas leur séparateurs

    On va donc demander à textread de lire une dernière valeur sur chaque ligne sans la stocker avec le marqueur * :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Year,Date,Time, Elev, Dev, Nb, Cy]=textread('R_con_uel_env_0543_02_20021019T200844_20091226T195730','%f%s%s%f%f%f%f%*f','headerlines',1,'commentstyle','shell','delimiter',';');
    Ce qui renvoie :

    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
    >> Year
     
    Year =
     
       1.0e+03 *
     
        2.0001
        2.0002
        2.0002
        2.0003
        2.0004
        2.0004
        2.0006
        2.0007
        2.0008
        2.0009
     
    >> Date
     
    Date = 
     
        '2000/01/26 '
        '2000/02/24 '
        '2000/03/17 '
        '2000/04/19 '
        '2000/05/15 '
        '2000/06/10 '
        '2000/08/14 '
        '2000/09/20 '
        '2000/10/16 '
        '2000/11/18 '
    C'est nettement mieux.



    Merci beaucoup Jérôme, j'ai pu ouvrir mon premier fichier, je vais tenter des les ouvrir et stocker les informations en boucle.
    Je me permettrai de revenir vers vous certainement pour d'autres questions.

    Thomas

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    rebonjour à toutes et a tous, merci encore du premier renseignement, je continue ma petite progression dans mon script et j'en arrive là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    cd ('C:\Users\Thomas\Documents\DATA')
     
    A=ls;
    for p=3:size(A,1)
    [Year,Date,Time,Elev,Dev,Nb,Cy]=textread('A(p,:)','%f%s%s%f%f%f%f%*f','headerlines',1,'commentstyle','shell','delimiter',';');
    end
    avec un messae d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ??? Error: Unexpected MATLAB operator.
     
    Error in ==> textread>noargname at 192
       arg = f(arg);
     
    Error in ==> textread at 159
    if (noargname(@exist,varargin{1}) ~= 2 || noargname(@exist,fullfile(cd,varargin{1})) ~= 2) ...
     
    Error in ==> Lecutre at 8
    [Year,Date,Time,Elev,Dev,Nb,Cy]=textread('A(p,:)','%f%s%s%f%f%f%f%*f','headerlines',1,'commentstyle','shell','delimiter',';'); 
    >>


    Je pense que le problème vient du coup de l'intégration du textread dans ma boucle.
    Ou bien même de la construction même de la boucle ?

    Qu'en pensez vous ?

    Merci

  8. #8
    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 882
    Points
    52 882
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    A = dir('C:\Users\Thomas\Documents\DATA');
     
    for p = 1:numel(A)
     
        if A.isdir
            continue
        end
     
        [Year,Date,Time,Elev,Dev,Nb,Cy] = textread(A.name(p), '%f%s%s%f%f%f%f%*f', ...
            'headerlines', 1, ...
            'commentstyle', 'shell', ...
            'delimiter', ';');
     
    end
    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)

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Voici la réponse de matlab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Comma separated list must have exactly one item.
    
    Error in ==> Lecutre at 9
        if A.isdir
     

  10. #10
    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 882
    Points
    52 882
    Par défaut
    Voici la version corrigée du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    A = dir('C:\Users\Thomas\Documents\DATA');
     
    for p = 1:numel(A)
     
        if A(p).isdir
            continue
        end
     
        [Year,Date,Time,Elev,Dev,Nb,Cy] = textread(A(p).name, '%f%s%s%f%f%f%f%*f', ...
            'headerlines', 1, ...
            'commentstyle', 'shell', ...
            'delimiter', ';');
     
    end
    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)

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    Merci Jérôme, cela semble fonctionner.

    Seulement voilà ... j'ai 224 fichiers en lecture, avec chacun en moyenne 50 lignes d'informations.
    Et le code que tu as fait me fait ressortir 476 données d'élévation, de Year, de Date ...
    Nom : Capture.JPG
Affichages : 143
Taille : 21,7 Ko
    Il en manque donc.

    J'essaye de trouver la où cela coince et je reviens vers vous

  12. #12
    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 882
    Points
    52 882
    Par défaut
    Le contenu des variables de sortie de la fonction textread est écrasé à chaque itération.

    Voici une façon de procéder :

    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
    A = dir('C:\Users\Thomas\Documents\DATA');
     
    k = 0;
    for p = 1:numel(A)
     
        if A(p).isdir
            continue
        end
     
        k = k+1;
     
        [Year{k},Date{k},Time{k},Elev{k},Dev{k},Nb{k},Cy{k}] = textread(A(p).name, '%f%s%s%f%f%f%f%*f', ...
            'headerlines', 1, ...
            'commentstyle', 'shell', ...
            'delimiter', ';');
     
    end
    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)

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Bonjour Jérôme, merci pour ce code :

    Citation Envoyé par Jerome Briot Voir le message
    Le contenu des variables de sortie de la fonction textread est écrasé à chaque itération.

    Voici une façon de procéder :

    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
    A = dir('C:\Users\Thomas\Documents\DATA');
     
    k = 0;
    for p = 1:numel(A)
     
        if A(p).isdir
            continue
        end
     
        k = k+1;
     
        [Year{k},Date{k},Time{k},Elev{k},Dev{k},Nb{k},Cy{k}] = textread(A(p).name, '%f%s%s%f%f%f%f%*f', ...
            'headerlines', 1, ...
            'commentstyle', 'shell', ...
            'delimiter', ';');
     
    end

    voici la réponse de Matlab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ??? Error using ==> dataread
    Trouble reading floating point number from file (row 1, field 1) ==> clc\n
    
    Error in ==> textread at 176
    [varargout{1:nlhs}]=dataread('file',varargin{:});
    
    Error in ==> Lecutre at 16
        [Year{k},Date{k},Time{k},Elev{k},Dev{k},Nb{k},Cy{k}] = textread(A(p).name, '%f%s%s%f%f%f%f%*f', ...
     


    Nom : Capture.JPG
Affichages : 76
Taille : 9,9 Ko

    Je ne comprends pas pourquoi il y a si peu de valeurs.

  14. #14
    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 882
    Points
    52 882
    Par défaut
    Vérifie le contenu de la variable A
    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)

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Voici le contenu de la variable A

    Nom : Capture.JPG
Affichages : 141
Taille : 26,4 Ko

  16. #16
    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 882
    Points
    52 882
    Par défaut
    Et donc ?
    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)

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Euh ... et donc je sais pas trop quoi en penser

  18. #18
    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 882
    Points
    52 882
    Par défaut
    Tu utilises sans doute la fonction dir avec un dossier qui ne contient pas de fichier à lire, non ?
    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)

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Jerome Briot Voir le message
    Tu utilises sans doute la fonction dir avec un dossier qui ne contient pas de fichier à lire, non ?


    et oui bien vu ! je suis vraiment nul ...

    voici ce que me sors MATLAB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Error using dataread
    Trouble reading literal string from file (row 1, field 8) ==> ; \n
    
    Error in textread (line 174)
    [varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>
    
    Error in Lecutre (line 16)
        [Year{k},Date{k},Time{k},Elev{k},Dev{k},Nb{k},Cy{k}] = textread(A(p).name, '%f%s%s%f%f%f%f%%f', ...

  20. #20
    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 882
    Points
    52 882
    Par défaut
    Le fichier qui pose problème a-t-il la même structure que celui que tu nous a montré dans ton premier message ?
    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)

Discussions similaires

  1. parser un fichier contenant des données au format JSON
    Par Jasmine80 dans le forum Modules
    Réponses: 2
    Dernier message: 08/09/2017, 22h25
  2. [XL-2010] Macro avec ouverture de fichiers contenant des macros
    Par eric4459 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/02/2015, 10h34
  3. Réponses: 3
    Dernier message: 22/06/2006, 17h34
  4. Renommer des fichiers contenant des espaces
    Par MatRem dans le forum Linux
    Réponses: 6
    Dernier message: 28/04/2006, 08h21
  5. Réponses: 2
    Dernier message: 26/02/2003, 15h18

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