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 :

Enregistrer une structure dans un fichier txt


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ingénieur traitement du signal
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur traitement du signal

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Enregistrer une structure dans un fichier txt
    Bonjour,

    Le problème dans cette discussion m'intéresse également. Il se trouve que j'ai moi aussi des structures que je voudrais sauvegarder dans un fichier texte. Certains de leurs champs sont des chiffres, d'autres du texte.

    J'ai essayé le bout de code recommandé, mais j'ai le message d'erreur suivant apparait pour les champs étant des nombres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: The argument for the %s format specifier must be of type char (a string).
    Y a-t-il une fonction du type double2string, qui ne râle pas si c'est déjà un string ? Sinon comment faire ?

    Je voudrais également ne sauvegarder que certains champs. J'ai vu qu'il y avait la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    save filetxt -struct S champs1 champsX -ascii
    mais les noms des champs ne alors sont pas écrits.

    Si qqun a une idée...

  2. #2
    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
    Salut,

    tu peux regarder du côté de num2str. Même si tu as déjà un string, la fonction passe sans problème.


    Pour l'enregistrement des champs, il faut qu'il soient également dans le bon format. Si tu as des cellules par exemple, tu obtiendras un warning si tu essayes de les enregistrer avec l'option -ascii.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    s.type={'big','little'};
    save test_struct.mat -struct s type % Ca marche très bien 
    save test_struct.mat -struct s type -ascii % tu obtiens un warning
    Warning: Attempt to write an unsupported data type to an ASCII file.
    	Variable 'type' not written to file.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Ingénieur traitement du signal
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur traitement du signal

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour ta réponse, num2str est très bien.

    As-tu une idée pour contourner le problème de la sauvegarde des champs différents ?

  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 166
    Points
    53 166
    Par défaut
    Une idée de départ :

    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
    S.a = 1;
    S.b = rand;
    S.c = 'a';
    S.d = 'abc';
     
    f = fieldnames(S);
     
    fid = fopen('struct.txt','wt');
     
    for n = 1:numel(f)
     
        switch class(S.(f{n}))
     
            case 'double'
     
                fmt = '%s : %f\n';
     
            case 'char'
     
                fmt = '%s : %s\n';
     
        end
     
        fprintf(fid,fmt,f{n},S.(f{n}));
     
    end
     
    fclose(fid);
     
    edit struct.txt
    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
    Femme Profil pro
    Ingénieur traitement du signal
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur traitement du signal

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Ok,
    Merci, ça fonctionne bien.
    Je suis un peu déçu que ca soit aussi lourd à mettre en place.
    J'ai réessayé avec "save", mais sans plus de succès...

Discussions similaires

  1. Envoyer une structure dans un fichier .txt
    Par floflo87 dans le forum C
    Réponses: 6
    Dernier message: 23/04/2013, 17h40
  2. Enregistrement d'une structure dans un fichier
    Par Portus dans le forum C++
    Réponses: 21
    Dernier message: 30/08/2012, 11h02
  3. enregistrer une structure dans un fichier
    Par Namson dans le forum C
    Réponses: 1
    Dernier message: 21/02/2009, 23h31
  4. enregistrer une donnee dans un fichier txt
    Par zorglub88 dans le forum MFC
    Réponses: 33
    Dernier message: 27/01/2006, 15h13
  5. Comment enregistrer une string dans un fichier
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/09/2005, 14h52

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