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 :

Charger et sauvegarder une structure


Sujet :

MATLAB

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Points : 99
    Points
    99
    Par défaut Charger et sauvegarder une structure
    Bonjour,
    j'ai une question concernant les structures.

    je cherche a charger un fichier .Mat contenant une structure, modifier un paramètre de la structure.
    et resauver l'ensemble de la structure sous un autre nom en .mat

    Avec ce code, je ne sauve pas toute la structure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    S=load(strcat(local,'\',name,'.mat'));
    S=setfield(S,var,newname);
    NOM=strcat(local,'\',name,'_.mat')
    save(NOM,'-struct','S');
    Merci pour votre aide
    ImagingAll

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Ben non avec cette forme de SAVE tu sauves les champs de la structure, c'est normal.
    Enlève l'option '-struct' si c'est la variable S (donc la structure) que tu veux sauver.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Points : 99
    Points
    99
    Par défaut
    je veux sauver tous le .mat avec l'ensemble de la structure.
    en retirant
    ImagingAll

    tout mon code

    function [f] = OutputDir(name,var,newname)
    local=pwd;
    S=load(strcat(local,'\',name,'.mat'));
    S=setfield(S,var,newname);
    NOM=strcat(local,'\',name,'_.mat')
    save(NOM,'-struct','S');
    Le fichier de depart fait 50 Mo et le final 13 Mo
    J'en deduit qu'il n'y a pas tout.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    salut,

    t'as compris l'aide de Caro ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    save(NOM,'S');  % Sauver la variable
     
    % et pas : 
     
    save(NOM,'-struct','S'); % sauver la structure (sans données)
    ++

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Points : 99
    Points
    99
    Par défaut
    oui, j'ai mal recopié

    mon code est
    function [f] = OutputDir(name,var,newname)
    name;
    local=pwd;
    S=load(strcat(local,'\',name,'.mat'));
    S=setfield(S,var, newname);
    NOM=strcat(local,'\',name,'_.mat')
    save(NOM,'S');
    je pense que 2eme S écrase le premier ...

    Coment faire pour sauvegarder le tout sous un autre fichier .mat ?

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Relis bien les aides de LOAD et SAVE.
    Je pense que tu mélanges un peu tout.Crée la structure S avec pour champs toutes les variables enregistrées dans le fichier fichier.mat.
    Est-ce bien ce que tu souhaites faire ?
    Parce que dans ton 1er post tu dis :
    je cherche a charger un fichier .Mat contenant une structure
    Si ton fichier contient une structure qui s'appelle S elle sera donc dans S.S...

    Pourrais-tu éventuellement nous donner un exemple de ce que tu veux faire, ce serait plus simple.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Points : 99
    Points
    99
    Par défaut
    Bonjour,

    une interface graphique ( Cellprofiler )permet de générer des .mat a exécuter en traitement de l'image.
    Ces .mat sont générés a partir de compte windows et on souhaite les faire tourner sous linux.

    Il existe un certain nombre de parametre à changer, dont la localisation des images.

    Je souhaite changer le parametre de localisation des images dans le .mat et genéré le meme .mat avec un changement uniquement dans le .mat.

    Je lance mon .m :
    function [f] = OutputDir(name,var,newname)
    name;
    local=pwd;
    Avec un Point d''arret ici

    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
    OutputDir('Batch_data','DefaultImageDirectory','data/master/')
    4   S=load(strcat(local,'\',name,'.mat'));
    K>> whos
      Name         Size            Bytes  Class    Attributes
     
      local        1x23               46  char               
      name         1x10               20  char               
      newname      1x12               24  char               
      var          1x21               42  char               
     
    K>> S=load(strcat(local,'\',name,'.mat'));
    K>> whos
      Name         Size               Bytes  Class     Attributes
     
      S            1x1             55362012  struct              
      local        1x23                  46  char                
      name         1x10                  20  char                
      newname      1x12                  24  char                
      var          1x21                  42  char                
     
    K>> S2=setfield(S,var, newname);
    K>> whos
      Name         Size               Bytes  Class     Attributes
     
      S            1x1             55362012  struct              
      S2           1x1             55362160  struct              
      local        1x23                  46  char                
      name         1x10                  20  char                
      newname      1x12                  24  char                
      var          1x21                  42  char
    Fin du code

    S=load(strcat(local,'\',name,'.mat'));
    S2=setfield(S,var, newname);
    NOM=strcat(local,'\',name,'_.mat')
    save(NOM,'S');
    ImagingAll

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    J'y comprends encore moins...
    Veux-tu :
    - Créer/Modifier le champ DefaultImageDirectory avec la valeur 'data/master/' dans la structure S (qui a comme champs les variables contenues au départ dans ton fichier .mat) et enregistrer cette variable ?
    - Créer la variable DefaultImageDirectory avec la valeur 'data/master/' et l'ajouter aux variables déjà existantes dans le fichier .mat ?

    Sinon remarques :
    Sur ton dernier code tu crées S2 que tu n'utilises pas.
    Pour créer un chemin vers un fichier il est en général plus propre d'utiliser fullfile (multi-plateformes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier=fullfile(local,[name,'.mat'])

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Points : 99
    Points
    99
    Par défaut
    Mais si tu as finit par me comprendre.
    Créer/Modifier le champ DefaultImageDirectory avec la valeur 'data/master/' dans la structure S (qui a comme champs les variables contenues au départ dans ton fichier .mat) et enregistrer cette variable ?
    Enregistrer la variable modifié et le .mat dans un autre .mat

    je sais que je en me sert pas de S2, mais c'est our changer la valeur de la variable sans ecraser l'ensemble du .mat que j'ai loadé ....

    ImagingAll

  10. #10
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Citation Envoyé par ImagingAllthe Voir le message
    Enregistrer la variable modifié et le .mat dans un autre .mat
    Euh...non toujours pas....on enregistre pas un .mat dans un .mat

    Citation Envoyé par ImagingAllthe Voir le message
    je sais que je en me sert pas de S2, mais c'est our changer la valeur de la variable sans ecraser l'ensemble du .mat que j'ai loadé ....
    Changer la variable S ne modifie en rien le fichier .mat de départ.
    LOAD ne fait que lire les variables du fichier et les mettre dans la structure S
    Un exemple (car vraiment j'ai l'impression qu'on ne se comprend pas du tout) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a=2;
    save('toto.mat','a);%je sauvegarde la valeur a dans toto.mat
    clear a
    S=load('toto.mat');
    %Pour récupérer ma valeur a je dois faire :
    S.a
    [EDIT] Sais-tu quelles variables tu as dans ton fichier de départ ?
    sinon pour le savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    whos('-file',lenomdufichier)

Discussions similaires

  1. [Débutant] sauvegarder une structure venu d'importdata
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/05/2013, 16h49
  2. Parcourir, charger et sauvegarder une image dans une BDD
    Par momjunior dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 31/01/2013, 11h28
  3. Réponses: 8
    Dernier message: 09/12/2011, 18h48
  4. sauvegarder une structure dans un fichier .mat
    Par jane40 dans le forum MATLAB
    Réponses: 5
    Dernier message: 26/08/2009, 10h57
  5. sauvegarder une structure en .txt
    Par kwatz dans le forum MATLAB
    Réponses: 5
    Dernier message: 04/05/2009, 09h31

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