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 :

Automatisation d'une collecte de données [Débutant]


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut Automatisation d'une collecte de données
    Bonjour à tous,

    Je reviens à nouveau vers vous car j'ai pas mal de problèmes en Matlab. Ce sujet fait écho à mon précédent sujet "Lecture d'un fichier CSV". Je voudrais réaliser une automatisation de tâches, voici donc un résumé du problème :

    Je possède un répertoire DATA et dedans un certain nombre de sous répertoire portant tous un nom calqué sur le même modèle : 12-2-1, 29-4-1 et ainsi de suite. Dans chacun de ces sous-répertoire, il y a à chaque fois des fichiers portant le même nom : Phdata.int, Imp1.int, Imp2.int, Imp3.int, Imp4.int, Imp5.int et Imp6.int. Mon objectif est de récupérer séparément les données binaires contenues dans ces int et de les stocker dans des vecteurs. J'ai déjà réussit à stocker comme je le souhaite mais je voudrais ne pas avoir à le faire manuellement. En effet, voici une fonction qui fait ce que je veux :

    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
    fid=zeros(7,1);
     
     
    %choisir ici le pH
     
    [filename, pathname] = uigetfile('*.*', 'Pick a file');
    nomfich1=fullfile(pathname,filename);
    fid(1)=fopen(nomfich1);
     
    %choisir ici les Imp dans l'ordre
     
    [filename, pathname] = uigetfile('*.*', 'Pick a file');
    nomfich2=fullfile(pathname,filename);
    fid(2)=fopen(nomfich2);
    [filename, pathname] = uigetfile('*.*', 'Pick a file');
    nomfich3=fullfile(pathname,filename);
    fid(3)=fopen(nomfich3);
    [filename, pathname] = uigetfile('*.*', 'Pick a file');
    nomfich4=fullfile(pathname,filename);
    fid(4)=fopen(nomfich4);
    [filename, pathname] = uigetfile('*.*', 'Pick a file');
    nomfich5=fullfile(pathname,filename);
    fid(5)=fopen(nomfich5);
    [filename, pathname] = uigetfile('*.*', 'Pick a file');
    nomfich6=fullfile(pathname,filename);
    fid(6)=fopen(nomfich6);
    [filename, pathname] = uigetfile('*.*', 'Pick a file');
    nomfich7=fullfile(pathname,filename);
    fid(7)=fopen(nomfich7);
     
    valeurs_ph=fread(fid(1),'short');
    valeurs_Imp1=fread(fid(2),'short');
    valeurs_Imp2=fread(fid(3),'short');
    valeurs_Imp3=fread(fid(4),'short');
    valeurs_Imp4=fread(fid(5),'short');
    valeurs_Imp5=fread(fid(6),'short');
    valeurs_Imp6=fread(fid(7),'short');
    valeurps_Imp_global=[valeurs_Imp1;valeurs_Imp2;valeurs_Imp3;valeurs_Imp4;valeurs_Imp5;valeurs_Imp6];
    Comme vous le voyez je récupère les valeurs qui m'intéresse dans les vecteurs valeurs_QUELQUECHOSE mais ce code ne me va pas : ce code m'oblige à sélectionner manuellement un à un chaque int ce qui prend du temps. Ce que je voudrais c'est qu'une fois ce script lancé, il me soit demandé un répertoire ; je choisis alors par exemple 12-2-1 et dedans il y a les différents int ; le script se charge de stocker seul les différents int dans les valeurs_QUELQUECHOSE sans mon intervention. Sauriez-vous comment faire ?

  2. #2
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Bonjour,
    tu pourrais utiliser uigetdir au lieu de uigetfile pour sélectionner un répertoire, puis la commande dir (doc ici) pour lister les fichiers de ce répertoire.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    Bonjour et merci de cette réponse rapide. Si j'utilise la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pathname = uigetdir('C:\MATLAB701\work\IMP\DATA\', 'Pick a Directory');
    J'ai donc le choix du sous-répertoire situé dans le répertoire DATA. Ensuite, avec la commande dir j'ai un peu de mal puisque je ne l'ai jamais utilisé : je voudrais mettre phdata.int dans fid(1), Imp1.int dans fid(2) ect jusqu'à Imp6 dans fid(7) et cela automatiquement à chaque fois mais je n'arrive à "visualiser" comment le faire avec dir.

    EDIT:

    J'ai réussi à trouver une solution de ce genre :

    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
    pathname = uigetdir('C:\MATLAB701\work\IMP\DATA\', 'Pick a Directory');
    nomfichier0=fullfile(pathname,'PhData.int');
    nomfichier1=fullfile(pathname,'Imp1.int');
    nomfichier2=fullfile(pathname,'Imp2.int');
    nomfichier3=fullfile(pathname,'Imp3.int');
    nomfichier4=fullfile(pathname,'Imp4.int');
    nomfichier5=fullfile(pathname,'Imp5.int');
    nomfichier6=fullfile(pathname,'Imp6.int');
    fid0=fopen(nomfichier0);
    fid1=fopen(nomfichier1);
    fid2=fopen(nomfichier2);
    fid3=fopen(nomfichier3);
    fid4=fopen(nomfichier4);
    fid5=fopen(nomfichier5);
    fid6=fopen(nomfichier6);
    valeurs_Imp1=fread(fid1,'short');
    valeurs_Imp2=fread(fid2,'short');
    valeurs_Imp3=fread(fid3,'short');
    valeurs_Imp4=fread(fid4,'short');
    valeurs_Imp5=fread(fid5,'short');
    valeurs_Imp6=fread(fid6,'short');
    valeurs_Imp_global=[valeurs_Imp1;valeurs_Imp2;valeurs_Imp3;valeurs_Imp4;valeurs_Imp5;valeurs_Imp6];

  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 : 53 160
    Points
    53 160
    Par défaut
    Tu trouveras d'autres méthodes plus automatisées dans la FAQ : Lecture/écriture de fichiers
    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
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 401
    Points : 102
    Points
    102
    Par défaut
    D'accord merci bien pour vos réponses.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/05/2009, 16h18
  2. Réponses: 9
    Dernier message: 13/09/2007, 18h29
  3. Automatiser l'exportation des données d'une base de données MySQL?
    Par zakiaetanas dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 23/03/2007, 11h04
  4. [CR] Utiliser une collection comme source de données
    Par augereau dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/11/2006, 17h40
  5. Réponses: 7
    Dernier message: 04/04/2006, 11h46

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