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 :

Assigner une valeur de champ dans un tableau de structures [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 8
    Par défaut Assigner une valeur de champ dans un tableau de structures
    Bonjour à tous,

    Je possède dans mon programme un tableau « grid » composé de structures comme ci-dessous :

    Nom : dev1.PNG
Affichages : 267
Taille : 5,2 Ko

    Chaque structure est composée de 4 champs correspondant à des coordonnées de points et un label.

    Nom : dev2.PNG
Affichages : 253
Taille : 5,5 Ko

    Je cherche à assigner une valeur (10 par exemple) au champ label pour tous les points d’une des structures. Cela ne pose pas de soucis lorsqu’il n’y a qu’un seul point dans la structure (comme pour la structure dans la cellule {1,5} de la copie d’écran) en utilisant :
    En revanche lorsqu’il y a plusieurs points une erreur
     “Insufficient outputs from right hand side to satisfy comma separated list expansion on left hand side. Missing [] are the most likely cause.”
    Je me doute bien que la formulation doit être différente étant donné qu’il y a plusieurs points, mais je n'ai pas réussi à la trouver...

    Avez-vous des idées pour cette formulation ?

    Merci d’avance pour votre aide !

  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
    Si je comprends bien :

    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
    >> grid{1,5}.label(1) = 0;
    >> grid{1,5}.label(2) = 1;
    >> grid{1,5}.label(3) = 0;
    >> grid{1,5}.label
     
    ans =
     
         0     1     0 
     
    >> grid{1,5}.label(:) = 10;
    >> grid{1,5}.label
     
    ans =
     
        10    10    10

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 8
    Par défaut
    J'ai justement pensé à cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grid{1,5}.label(:) = 10;
    Là encore, ça fonctionne lorsqu'il n'y a qu'un seul point (une seule ligne dans la structure) :

    Nom : Capture d’écran 2017-03-29 à 21.33.24.png
Affichages : 255
Taille : 22,8 Ko


    En revanche, lorsqu'il y à plusieurs points, la valeur du champ ne change pas et j'obtiens l'erreur : "Scalar structure required for this assignment."

    Nom : Capture d’écran 2017-03-29 à 21.32.19.png
Affichages : 244
Taille : 28,1 Ko

  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
    Comme ceci avec la fonction deal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    grid{1,5}(1).label = 0;
    grid{1,5}(2).label = 1;
    grid{1,5}(3).label = 0;
     
    [grid{1,5}(:).label] = deal(10);

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 8
    Par défaut
    C'est bien ça! Ca fonctionne avec la fonction deal.

    Merci pour votre aide !

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

Discussions similaires

  1. Assigner une valeur à un champ Blob
    Par Jean-Jacques Engels dans le forum Requêtes
    Réponses: 0
    Dernier message: 28/11/2011, 21h15
  2. [AC-2007] Selectionner une valeur de champs dans un sous formulaire
    Par Florinet dans le forum IHM
    Réponses: 3
    Dernier message: 05/10/2011, 09h27
  3. Comment vérifier si une valeur est incluse dans un tableau
    Par hornetbzz dans le forum Contribuez
    Réponses: 2
    Dernier message: 01/03/2011, 01h32
  4. Réponses: 8
    Dernier message: 27/11/2008, 16h14
  5. Réponses: 2
    Dernier message: 16/11/2007, 09h59

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