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 :

Création d'un tableau de données à partir de plusieurs fichiers .txt [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Création d'un tableau de données à partir de plusieurs fichiers .txt
    Bonjour,

    Voici ma problématique :

    Je possède des spectres Raman enregistrés dans un répertoire, chaque spectre d’échantillon est enregistré sous la forme d’un fichier .txt avec 2 colonnes, dans la première figure les longueurs d’onde, dans la seconde les intensités correspondantes (pas d’entête, mais un séparateur de décimal «,»).

    J’aimerai obtenir au final un tableau avec en colonne uniquement les intensités de chacun de mes échantillons pour chacune de mes longueurs d’onde.

    Voilà où j’en suis actuellement grâce à ce forum et je vous en remercie (j’ai pris un répertoire test de 27 échantillons, soit 27 fichiers .txt avec chacun 2 colonnes, j'aimerais donc obtenir un tableau final de 1901 lignes et 27 colonnes).

    1 – j’ai réussi à remplacer les « , » par de « . » grâce à la fonction repinfile
    2 – je n’arrive pas à voir ou à ouvrir l’ensemble des 27 fichiers et au final je n’ai que la valeur d’un des échantillons (qui n’est étonnamment ni le dernier, ni le premier, mais le 47ème en prenant en compte les nouveaux fichiers générés par la fonction repinfile).

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    %% Faire le vide
    clc;
    clear all;
     
    %%
    dossier='C:\Users\DoTiT\Desktop\test'; % à renseigner
    extension='.txt'; % à renseigner
    chemin1=[dossier,'/*',extension];
    D1=dir(chemin1); 
    nD1=length(D1);
     
    %% remplacer les ',' par des '.'
    echantillon=[];
     
    for iD1= 1:nD1;
     
     
        echantillon=D1(iD1).name;
        repinfile([dossier,'/',echantillon],',','.');
     
    end;
     
     
    %% ouverture des nouveaux fichiers (avec des points)
     
    chemin2=[];
    D2=[];
    nD2=[];
    chemin2=[dossier,'/*',extension];
    D2=dir(chemin2);
    nD2=length(D2);
     
    %%
    ech=[];
    fid=[];
    lecture=[];
     
     
    for iD2=nD1:nD2
     
        ech=D2(nD1+iD2).name;
        fid=fopen([dossier,'\',ech]);
        lecture=textscan(fid, '%f%f');         
     
     
    end;
     
     
     
    fclose(fid);

    Merci beaucoup pour votre aide,

    Bien cordialement,

    Antoine

    PS : veuillez trouver en pièce jointe le dossier avec les différents fichiers .txt
    Fichiers attachés Fichiers attachés

  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 882
    Points
    52 882
    Par défaut
    Voici dans un premier temps ton code corrigé :

    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
    32
    33
    34
    35
    %% Faire le vide
    clc;
    clear all;
     
    %%
    dossier = 'C:\Users\DoTiT\Desktop\test'; % à renseigner
    extension = '*.txt'; % à renseigner
    chemin1 = fullfile(dossier, extension);
    D1 = dir(chemin1);
    nD1 = length(D1);
     
    %% remplacer les ',' par des '.'
    for iD1 = 1:nD1
     
        echantillon = D1(iD1).name;
        repinfile(fullfile(dossier,echantillon), ',', '.');
     
    end
     
    %% ouverture des nouveaux fichiers (avec des points)
    chemin2 = fullfile(dossier, extension);
    D2 = dir(chemin2);
    nD2 = length(D2);
     
    %%
     
    for iD2 = nD1:nD2
     
        ech = D2(nD1+iD2).name;
     
        fid = fopen(fullfile(dossier,ech), 'r');
        lecture = textscan(fid, '%f%f');
        fclose(fid);
     
    end
    À chaque itération, le contenu de la variable lecture est écrasé.
    Voir par exemple la FAQ : Comment créer dynamiquement des variables nommées A1, A2, A3… AN ?
    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
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour cette réponse rapide.

    Si à chaque itération de la variable lecture le contenu est écrasé, je ne comprends pas pourquoi je n'ai pas uniquement les colonnes de mon dernier fichier

    De plus la même structure de boucle fonctionne bien pour tous les fichiers avec la fonction repinfile.

    J'ai déjà essayé pas mal de structures différentes, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for iD2 = nD1:nD2
     
        ech = D2(nD1+iD2).name;
     
        fid = fopen(fullfile(dossier,ech), 'r');
        lecture (:,iD2) = textscan(fid, '%f%f');
        fclose(fid);
     
    end
    Sans succès

     ??? Assignment has more non-singleton rhs dimensions than
    non-singleton
    subscripts
    
    Mais c'est vrai que j'ai encore du mal à manipuler les structures..

  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
    Tu te compliques la vie avec les indices dans la deuxième boucle.

    Normalement, repinfile créé des fichiers avec le préfixe 'new_' (au passage, je pense que la version strrepInFile sur le File Exchange est plus à jour…)

    Tu peux donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    %% ouverture des nouveaux fichiers (avec des points)
    chemin2 = fullfile(dossier, ['new_' extension]);
    D2 = dir(chemin2);
    nD2 = length(D2);
     
    %%
     
    for iD2 = 1:nD2
     
       ech = D2(iD2).name;
     
    end
    Pour finir, la fonction textscan n'est simple à utiliser…

    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
    lecture  = [];
    for iD2 = 1:nD2
     
        ech = D2(iD2).name;
     
        fid = fopen(fullfile(dossier,ech), 'r');
     
        X = textscan(fid, '%f%f', 'CollectOutput', true);
        lecture  = [lecture ; X{1}];
     
        fclose(fid);
     
    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)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci pour ce code,

    Il me permet d'avoir un tableau de 2 colonnes avec mes échantillons les un en dessous des autres soit :

    27*1901 = 51327 lignes et donc 2 colonnes or dans l'idéal je cherche à avoir 1901 lignes et 27 colonnes (je n'ai besoin ici que de la 2eme colonne).

    Sur le précédent code j'avais à la fin un tableau de 2 colonnes avec sur la première colonne les 1901 longueurs d'onde et sur la deuxième colonne les intensités correspondantes mais uniquement pour mon échantillon n°20, donc dans mon esprit je cherchais plutôt un moyen d'obtenir ceci pour les 27 échantillons et de concaténer les 2ème colonnes pour avoir mon tableau uniquement des intensités.

    Sur le code du coup, je ne comprends pas vraiment le rôle de 'CollectOutput'.

    J'ai du mal aussi avec la fonction 'fopen', j'arrive à l'utiliser en pratique pour ouvrir mes fichiers, mais je ne comprends pas du tout à quoi ça correspond (par exmple ici pourquoi fid me renvoie la valeur 3)...

    Merci pour votre aide / explication.

  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 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
    Comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    lecture  = [];
    for iD2 = 1:nD2
     
        ech = D2(iD2).name;
     
        fid = fopen(fullfile(dossier,ech), 'r');
     
        X = textscan(fid, '%*f%f');
        lecture  = [lecture X{1}];
     
        fclose(fid);
     
    end

    Citation Envoyé par dotitno Voir le message
    Sur le code du coup, je ne comprends pas vraiment le rôle de 'CollectOutput'.
    Sans le paramètre 'CollectOutput' à true, la fonction textscan renvoi chaque colonne dans une cellule différente du tableau de cellules X. Avec ce paramètre à true, les deux colonnes sont fusionnées dans la même cellule de X.


    Citation Envoyé par dotitno Voir le message
    J'ai du mal aussi avec la fonction 'fopen', j'arrive à l'utiliser en pratique pour ouvrir mes fichiers, mais je ne comprends pas du tout à quoi ça correspond (par exmple ici pourquoi fid me renvoie la valeur 3)...
    La variable fid contient un identifiant (file id) du fichier ouvert sous forme d'un nombre. Peu importe sa valeur. En cas d'échec d'ouverture du fichier, fid vaut -1.
    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)

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    J'essaye de ce pas.

    En attendant je m'en étais sorti avec ton code en ajoutant ceci pour obtenir mon tableau final (1901x27) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    nech=1901
     
    for iD2 = 1:nD2
     
    Z(:,iD2)=lecture((iD2-1)*nech+1:iD2*nech,2);
     
    end;
    Et j'ai compris pourquoi le dernier fichier de la liste ne correspond pas au dernier échantillon du répertoire. Il y a un problème avec le nom des échantillons.

    Exemple :
    il va d'abord prendre en compte les J1R1FU0 puis J1R1FU10 puis les J1R1FU12 avant de repartir sur J1R1FU1 pour terminer du coup par J1R1FU8.
    Y a t il un moyen pour avoir les colonnes dans l'ordre?

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Ton dernier script fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    lecture  = [];
    for iD2 = 1:nD2
     
        ech = D2(iD2).name;
     
        fid = fopen(fullfile(dossier,ech), 'r');
     
        X = textscan(fid, '%*f%f');
        lecture  = [lecture X{1}];
     
        fclose(fid);
     
    end
    Un très grand merci!

    Reste le problème de l'ordre je cherche une astuce pour ne pas avoir à renommer les fichiers (les numeros de 0 à 12 correspondent à des concentrations croissantes).

  9. #9
    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
    Citation Envoyé par dotitno Voir le message
    Reste le problème de l'ordre je cherche une astuce pour ne pas avoir à renommer les fichiers (les numeros de 0 à 12 correspondent à des concentrations croissantes).
    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
    15
    16
    17
    18
    19
    20
    21
    %% ouverture des nouveaux fichiers (avec des points)
    chemin2 = fullfile(dossier, ['new_' extension]);
    D2 = dir(chemin2);
    nD2 = length(D2);
     
    prefix = D2(1).name(1:end-5);
     
    lecture  = [];
     
    for iD2 = 1:nD2
     
        ech = sprintf('%s%d.txt', prefix, iD2-1);
     
        fid = fopen(fullfile(dossier,ech), 'r');
     
        X = textscan(fid, '%*f%f');
        lecture  = [lecture X{1}];
     
        fclose(fid);
     
    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)

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut new_
    Encore merci,

    Le script ne fonctionne pas car le fichier new_J1R1FU0M0 n'existe pas, il n'existe qu'à partir du new_J1R1FU0M1.
    Comme le fichier n'existe pas fid me renvoie directement -1.

    J'ai essayé d'inclure une condition, sans succès

    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
    %% ouverture des nouveaux fichiers (avec des points)
    chemin2 = fullfile(dossier, ['new_' extension]);
    D2 = dir(chemin2);
    nD2 = length(D2);
     
    prefix = D2(1).name(1:end-5);
     
    lecture  = [];
     
    for iD2 = 1:nD2
     
        if iD2>1
        ech = sprintf('%s%d.txt', prefix, (1:iD2)-1);
    else
        ech = D2(iD2).name;
     
        end;
     
        fid = fopen(fullfile(dossier,ech), 'r');
     
        X = textscan(fid, '%*f%f');
        lecture  = [lecture X{1}];
     
        fclose(fid);
     
    end;
    Il me renvoie dans ce cas un numéro d'ech avec un petit carré à la fin (après le .txt)

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Précision :

    De plus, si j'ai bien compris ton script avec le préfixe tu ajoutes les new_J1R1FU0M puis après M de 0 à 27 ?

    Quoiqu'il en soit ce n'est plus vraiment ma question initiale à laquelle tu as parfaitement répondue, peut être devrais je lancer un nouveau post pour ce nouveau problème non ?

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Pour résumer :

    Voici un code qui permet d'ouvrir nfichiers .txt (séparateur décimal ','), contenus dans un répertoire unique et d'obtenir un tableau de n colonnes correspondant à l'ensemble des 2ème colonnes de chacun des nfichiers.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    %% Faire le vide
    clc;
    clear all;
     
    %% Chemin des premiers fichiers avec comme séparateur des virgules
     
    dossier = 'C:\repertoire'; % à renseigner
    extension = '*.txt'; % à renseigner
    chemin1 = fullfile(dossier, extension);
    D1 = dir(chemin1);
    nD1 = length(D1);
     
     
    %% remplacer les ',' par des '.'
     
    for iD1 = 1:nD1
     
        echantillon = D1(iD1).name;
        repinfile(fullfile(dossier,echantillon), ',', '.');
     
    end
     
     
    %% Chemin pour les nouveaux fichiers avec comme séparateur des points
     
    chemin2 = fullfile(dossier, ['new_' extension]);
    D2 = dir(chemin2);
    nD2 = length(D2);
     
     
    %% Création du tableau lecture avec les intensités de chaque fichier en colonne
     
    lecture  = [];
    for iD2 = 1:nD2
     
        ech = D2(iD2).name;
     
        fid = fopen(fullfile(dossier,ech), 'r');
     
        X = textscan(fid, '%*f%f');
        lecture  = [lecture X{1}];
     
        fclose(fid);
     
    end
    Un grand merci à Jerome Briot

  13. #13
    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 une version plus robuste :

    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
    %% ouverture des nouveaux fichiers (avec des points)
    chemin2 = fullfile(dossier, ['new_' extension]);
    D2 = dir(chemin2);
    nD2 = length(D2);
     
    prefix = D2(1).name(1:end-5);
     
    num = cellfun(@(x) sscanf(x, [prefix '%d.txt']), {D2.name});
    [~, idx] = sort(num);
     
    D2 = D2(idx);
     
    lecture  = [];
     
    for iD2 = 1:nD2
     
        ech = D2(iD2).name;
     
        fid = fopen(fullfile(dossier,ech), 'r');
     
        X = textscan(fid, '%*f%f');
        lecture  = [lecture X{1}];
     
        fclose(fid);
     
    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)

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Pharmacien
    Inscrit en
    Septembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour Jerome,

    Je viens juste de tester ton nouveau code. Ce message d'erreur apparait :

    ??? Error using ==> cellfun
    Non-scalar in Uniform output, at index 4, output 1.
    Set 'UniformOutput' to false.
    
    Ton code est inconnu pour moi (je ne connaissais pas la fonction cellfun, je n'arrive donc pas à voir où ça coince pour le moment.
    Quoiqu'il en soit si c'est pour incrémenter mes fichiers dans le bon ordre le plus simple est, je pense, de les renommer car il y a trop de niveaux pour que ce soit simple. Je m'explique :

    J1 = Jour 1
    R1 = Répétition 1
    FU1 = Concentration de FU1
    M1 = Mesure 1

    Dans le dossier test J1 et R1 ne bougent pas, FU varie de FU0 à FU12 et pour chaque concentration 3 mesures (M1 à M3).
    Le problème actuel c'est que Matlab les incrémente dans cet ordre : FU0 (M1,M2,M3) ce qui est bien, puis FU10(M1,M2,M3)?? puis FU12 puis FU1.
    En changeant le nom du fichier par FU000 FU010 FU100 FU120 ça fonctionne très bien.

    J'espère avoir été clair,

    Merci

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

Discussions similaires

  1. [XL-2010] Regrouper des données à partir de plusieurs fichiers
    Par TheMWette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/04/2018, 15h49
  2. [XL-2010] macro de récuperation de données à partir de plusieurs fichiers excel
    Par julien1603 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/05/2015, 02h37
  3. Réponses: 8
    Dernier message: 13/01/2010, 10h34
  4. Réponses: 2
    Dernier message: 26/01/2007, 14h58

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