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 :

Suppression donnée dans structure


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 112
    Par défaut Suppression donnée dans structure
    Bonjour,

    Je n'arrive pas à supprimer un champ particulier dans une structure avec la fonction rmfield. Voici un exemple qui correspond à mon problème:

    Supposons l'éxécution dans un répertoire de fichiers *.mat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A = dir('*.mat');
    A(1,1)=rmfield(A(1,1),'bytes');
    Ceci me mets une erreur que je ne comprends pas ...
    ??? Subscripted assignment between dissimilar structures
    Si qqn a une petite idée ...
    Merci

  2. #2
    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
    Essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    A = dir('*.mat');
    A = rmfield(A,'bytes');
    Le champs doit être enlevé à tous les éléments de la Structure

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 112
    Par défaut
    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 112
    Par défaut
    Bonjour,

    J'ai un autre souci en relation avec le précédent.
    J'ai ajouté une structure de données à chaque élément de ma matrice A. J'aimerais supprimer une variable de cette structure à toute la matrice en faisant quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A.toto = rmfield(A.toto,'var1');
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = rmfield(A,'toto.var1');
    mais sans succès !
    Je ne trouve pas l'écriture correcte...
    Si qqn a une petite idée, Merci.

  5. #5
    Expert confirmé
    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
    Par défaut
    La fonction RMFIELD supprime un champ de toute la structure.

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a(1).toto=2;
    a(2).toto=3;
    a(1).tata=4;
    a=rmfield(a,'toto');%a n'a plus que le champ tata
    Qu'entends-tu donc par supprimer une "variable" de la structure ?
    Dans ton exemple c'est quoi "var1" ?
    Peux-tu donner plutôt un exemple réel que l'on pourrait reproduire ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 112
    Par défaut
    OK, voici un exemple de ce que je veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    a=5;
    b=6;
    save toto.mat
    save tata.mat
    clear a b;
     
    A = dir('*.mat');
    for k=1:length(A)
       A(k,1).struct1.var1=5.5;
       A(k,1).struct1.var2=10.2;
    end
    Et la je voudrais par exemple supprimer var1 de A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >> A(:,1).struct1 = rmfield(A(:,1).struct1,'var1')
    ??? Error using ==> rmfield
    Too many input arguments.
    J'ai opté pour la solution suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for k=1:length(A)
      if isfield(A(k,1).struct1, 'var1')
        A(k,1).struct1=rmfield(A(k,1).struct1,'var1');
      end
    end
    Pas trouvé plus simple ...
    Merci

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

Discussions similaires

  1. Saisie des données dans structure de tableau
    Par tresonance dans le forum Débuter
    Réponses: 1
    Dernier message: 20/07/2014, 21h00
  2. [XL-2007] Suppression données dans une colonne par comparaison et conditions
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/04/2013, 09h29
  3. Suppression donnée dans sous-formulaire
    Par Marcopololo dans le forum IHM
    Réponses: 12
    Dernier message: 15/08/2008, 20h38
  4. Insérer données dans structure différente
    Par guigui11 dans le forum Access
    Réponses: 2
    Dernier message: 18/09/2006, 16h31
  5. Importer la structure d'une base de donnée dans un combobox
    Par hanines dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/09/2005, 22h41

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