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 :

faire un load pour plusieurs fichiers


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut faire un load pour plusieurs fichiers
    Bonsoir à tous,
    j'ai i matrices m*n sous forme de i fichiers matlab (une matrice par fichier .mat)
    Mon but final est de concaténer toutes ces matrices.

    Voilà mon début (rikiki) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    cd C:\ XXX
    [filename, pathname] = uigetfiles('*.mat', 'blablabla')
     
    je me suis ensuite dit qu'il faudrait faire un truc du genre
    for f = 1:size(filename,1)
        load ???
    reseau = cat(matrice{:})
    end
    En fait je n'arrive pas à donner le nom de fichier de référence à mon "load".
    Pour la formule de concaténation, je ne sais si elle est juste mais je devrais pouvoir en trouver une correcte une fois que j'aurai pu charger ce que je voulais.

    si quelqu'un peut m'aider...
    Merci d'avance !!

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Je pense que ca pourrait ressembler à ca:

    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
     
    % Définiition des noms de fichiers
    [filename,pathname] = uigetfile('.mat', 'Sélection des fichiers d''entrée', 'MultiSelect', 'on');
    if (pathname == 0); return; end
     
    filename = cellstr(filename);
     
    % Initialisation de la matrice final
    matrice = [];
     
    % Chargement des fichiers
    for i_file = 1:length(filename)
        mat_temp = load(fullfile(pathname,filename{i_file}));
        matrice = [matrice, mat_temp];
    end
    A adapter et tester...

    Bonne soirée,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    merci beaucoup !!!!!!!!!
    je teste ca et je ferai un retour...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Si tu as un répertoire qui contient tous tes fichiers, tu peux également passer par une lecture automatique sans faire de uigetfile

    En reprenant l'exemple de magelan, ca donnerait un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    matrice = [];
    nombre_fichier=dir;
     
    for nb=3:size(nombre_fichier)
     
     %   fprintf('\tfichier n°%u\n',nb-2);  % optionnel
        nom_fichier=nombre_fichier(nb).name;
     
        mat_temp=load(nom_fichier);
        matrice = [matrice, mat_temp];
     
    end
    A adapter et tester également

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    hello,
    alors tout d'abord encore merci. J'aurai pu y passer plus que ma journée si j'avais été tout seul. Donc MERCI !!!

    sinon j'ai modifié le truc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i_file = 1:length(filename)
        mat_temp = load(fullfile(pathname,filename{i_file}));
        matrice = [matrice;mat_temp.rez];
    end
    en effet si on ne rajoute pas le .rez (c'était le nom de la matrice pour chaque fichier), il concaténait les structures mais pas vraiment les matrices (ou alors c'est qu'il y a encore un truc que je n'ai pas compris )

    edit : @ Merel : croisi postage, donc merci ! je prend note et je teste

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    En effet, tu n'as même pas besoin du mat_temp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i_file = 1:length(filename)
        load(fullfile(pathname,filename{i_file}));
        matrice = [matrice;rez];
    end
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    je ne sais pas si c'est parce que j'ai un vieux matlab (5.3) mais il faut que je laisse le mat_temp.rez. Sinon il me met "??? Undefined function or variable 'rez'"

    Bref, tant que ca marche

Discussions similaires

  1. Macro unique pour plusieurs fichiers excel
    Par jackbauer972 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/07/2007, 13h41
  2. 1 ctl pour plusieurs fichier, plusieurs tables
    Par cathou9999 dans le forum Administration
    Réponses: 3
    Dernier message: 10/05/2007, 16h18
  3. Browse pour plusieur fichiers
    Par Mirna dans le forum MFC
    Réponses: 2
    Dernier message: 18/10/2006, 22h45
  4. [VBA-E]une macro unique pour plusieurs fichiers excel
    Par fanchic29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/04/2006, 16h20
  5. Autorun pour plusieurs fichiers en simultané sur clé USB
    Par princebaal dans le forum Windows
    Réponses: 1
    Dernier message: 06/10/2005, 13h35

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