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

Octave Discussion :

Tableau struct : "structs must have same fields up to order"


Sujet :

Octave

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Tableau struct : "structs must have same fields up to order"
    Bonjour,

    J'ai l'habitude de travailler sur Scilab mais cette fois je suis amené à travailler sur Matlab (en réalité Octave).
    J'ai vu des dizaines de questions sur les structures sur le forum, mais je n'ai pas réussi à trouver la réponse à ma question.

    Voilà mon problème sur l'exemple le plus simple possible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a(1)=struct('u',ones(5,1),'v',ones(5,1)) : cette ligne fonctionne
     
    b=struct('u',ones(5,1),'v',ones(5,1),'w',ones(5,1)) : cette ligne fonctionne
     
    a(1)=struct('u',ones(5,1),'v',ones(5,1),'w',ones(5,1)) : cette ligne ne fonctionne pas.
    Voilà l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    error: orderfields: structs must have same fields up to order
    error: incompatible fields in struct assignment
    error: assignment to structure element failed
    error: assignment failed, or no method for 'struct = scalar struct'
    J'ai jamais eu ce problème sur Scilab, je n'arrive pas à voir quel peut être le problème. En pratique je pourrais contourner le problème en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a(1).u=ones(5,1)
    a(1).v=ones(5,1)
    a(1).w=ones(5,1)
    Et maintenant cela fonctionne.. Mais dans mon programme j'ai besoin d'appeler chaque objet du tableau dans une fonction et je retrouve à chaque fois le même problème...

    J'espère que ma question n'est pas trop débile.

    Merci d'avance.
    Cordialement,
    Hugo

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le problème est que tu tentes d'assigner deux structures différentes :
    • La première : struct('u',ones(5,1),'v',ones(5,1)) ne contient que deux champs u et v
    • Alors que la seconde struct('u',ones(5,1),'v',ones(5,1),'w',ones(5,1)) contient en plus w

    Et c'est ce qu'Octave (et aussi MATLAB) n'aime pas.

    La syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a(1).u=ones(5,1)
    a(1).v=ones(5,1)
    a(1).w=ones(5,1)
    est elle correcte, car elle ajoute le champ si celui-ci n'existe pas, et l'écrase s'il existe.

    Même si celui-ci doit être vide, introduit le champ w dès le début.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ce n'étais que ça...
    J'ai donc simplement ajouté un clear en haut de mon script et ça fonctionne: La honte.

    Merci beaucoup!

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    juste pour info (et au cas ou tu cherche à faire de l'automatisation), la syntaxe suivante marche aussi (et je la trouve pratique et lisible):

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

Discussions similaires

  1. [Mapping] Foreign key yy must have same number of columns as zz
    Par golgoth9 dans le forum Hibernate
    Réponses: 2
    Dernier message: 19/12/2014, 20h54
  2. Réponses: 9
    Dernier message: 31/12/2010, 12h08
  3. Réponses: 2
    Dernier message: 18/02/2010, 18h08
  4. Réponses: 2
    Dernier message: 02/04/2008, 13h21
  5. Initialisation d'un tableau de type STRUCT
    Par Axiome dans le forum MFC
    Réponses: 4
    Dernier message: 06/09/2005, 10h58

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