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 éclairé
    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
    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 éclairé
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    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 éclairé
    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
    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 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
    Tu trouveras d'autres méthodes plus automatisées dans la FAQ : Lecture/écriture de fichiers

  5. #5
    Membre éclairé
    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
    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, 15h18
  2. Réponses: 9
    Dernier message: 13/09/2007, 17h29
  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, 10h04
  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, 16h40
  5. Réponses: 7
    Dernier message: 04/04/2006, 10h46

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