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 :

concatener structures (avec variables de meme noms) [Débutant]


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut concatener structures (avec variables de meme noms)
    Bonjour Bonjour!

    Je vous contacte en esperant obtenir un petit coup de pouce concernant la fusion de deux structures sous Matlab

    J'ai deux fichiers .mat (mes deux structures a concaténer):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    load 'structure_1.mat'
    load 'structure_2.mat'
    chacune des deux structures possède 6 variables QUI PORTENT LE MÊME NOM dans les deux structures (c'est là que je bloque)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    structure_1 = 
    var1: [50000x1 double]
    var2: [50000x1 double]
    var3: [50000x1 double]
    var4: [1x300 double]
    var5: [50000x300 double]
    var6: [50000x300 double]

    idem pour la structure_2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    structure_2 = 
    var1: [70000x1 double]
    var2: [70000x1 double]
    var3: [70000x1 double]
    var4: [1x300 double]
    var5: [70000x300 double]
    var6: [70000x300 double]
    donc je voudrais concaténer le tout pour obtenir une structure du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    structure_3=
    var1: [120000x1 double]
    var2: [120000x1 double]
    var3: [120000x1 double]
    var4: [1x300 double]
    var5: [120000x300 double]
    var6: [120000x300 double]
    Mais attention, la longueur 300 ne dois pas bouger elle.. je veux concaténer sur le nombre de lignes.. (c'est pas tres francais)


    donc j'ai essayer plusieurs choses apres avoir rechercher sur internet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    structure_3= [structure_1; structure_2]
    ca marche mais ca ne donne pas vraiment ce que je souhaite.. pour appeler les variables suite a cette ligne de code je dois faire:
    mais je souhaiterais vraiment une nouvelle structure sans avoir a faire référence aux deux structures de depart


    donc j'ai télécharger la fonction "catstruct"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    structure_3= catstruct(structure_1; structure_2)
    sauf que comme les variables ont le même noms, cette fonctions concatène en utilisant que une des deux variables (la plus grande)

    Auriez vous d'autres idées?
    Je vous remercie beaucoup
    Bonne journée a vous

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Si ce n'est pas pour automatiser, tu peux très bien le faire ponctuellement de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct3.var1 = cat(1,struct1.var1,struct2.var1);
    struct3.var2 = cat(1,struct1.var2,struct2.var2);
    % etc, etc
    PS: que se passe t'il sur la variable 4? puisqu'on passe de 600 nombres à 300 nombres
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut
    hello,

    Ouioui je peux le faire comme ca, mais c'est juste long, parce que la je dois concaténer 2 structures avec 6 variables, mais j'en ai d'autres a faire ou il y a une 20aine de variables..
    je pensais qu'il y avait un moyen plus propre de faire ca! ^^

    et pour la variable 4... c'est une variable particulière: elle est la même pour les deux structures (les mêmes valeurs).. c'est a dire que la variable 4 doit toujours rester a 1x300, et pas 1x600..
    je peux donc laisser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct3.var4 = struct1.var4;
    sinon si je fais ce que tu me dis, ca me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    struct3 =
    var4: [2x300 double]
    Du coup il n'y a pas une petite astuce plus propre que ca?
    mais merci beaucoup ton idée fonctionne tres bien aussi et j'obtiens exactement ce que je souhaitais!

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Une autre idée pour automatiser un peu est d'effectuer un tableau de cellule contenant le nom de tes variables pour parcourir ta structure à l'aide d'une boucle.

    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
    mesVariables = 
     
        'var1'
        'var2'
        'var3'
        'var4'
        'var5'
        'var6'
     
    for i = 1:6
        if i ~=4
            struct3.(mesVariables{i}) = cat(1,struct1.(mesVariables{i}),struct2.(mesVariables{i}));
        else 
            struct3.(mesVariables{i}) = struct1.(mesVariables{i});
        end
    end
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  5. #5
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut
    C'est nickellllllllllllllllllllll !!

    Merci beaucoup Gooby

  6. #6
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 881
    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 881
    Points : 3 429
    Points
    3 429
    Par défaut
    l'idée de gooby peut encore se simplifier (surtout s'il y a 2000 vari) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for i = 1:6
        if i ~=4
            struct3.(sprintf('var%d',i)) = cat(1,struct1.(sprintf('var%d',i)),struct2.(sprintf('var%d',i)));
        else 
            struct3.(sprintf('var%d',i)) = struct1.(sprintf('var%d',i));
        end
    end
    sinon on peut aussi faire des structures de tableaux (ce qui est préférable):

  7. #7
    Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Australie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 74
    Points : 42
    Points
    42
    Par défaut
    Merciiii merciii

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

Discussions similaires

  1. Concatener requete avec variable
    Par blinkman04 dans le forum Langage
    Réponses: 12
    Dernier message: 09/10/2011, 17h10
  2. [XSLT 1.0] Pb avec variable contenant le nom d'un noeud
    Par alainSQL dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/01/2011, 21h16
  3. package avec variable dans le nom
    Par simoryl dans le forum Langage
    Réponses: 1
    Dernier message: 22/07/2008, 11h36
  4. [XSD] Eléments avec même nom et attributs différents
    Par stanware dans le forum Valider
    Réponses: 3
    Dernier message: 24/06/2008, 17h44
  5. Creation d'une table avec variable dans le nom
    Par 3vilsnake dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/07/2007, 17h49

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