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 :

Manipulation de structure : Problème liste variable


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut Manipulation de structure : Problème liste variable
    Bonjour à tous.

    J'ai une structure avec 4 dates.

    Donc

    struct.date1
    struct.date2
    struct.date3
    struct.date4

    Pour chaque field de la structure j'ai une matrice de style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct.date1 =
    Ct1 Ct2 Ct3 
    A     B    C 
     
    struct.date2 =
    Ct1 Ct4 Ct3 
    D     E    F
    J'aimerais faire une matrice avec en ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Ct1  Ct2  Ct3  Ct4
    A      B    C
    D           F   E
    En gros je pense qu'il faut faire la liste des Ct pour la première structure et remplir les valeurs, puis chercher chaque Ct de la seconde structure et regarder si elle existe si oui mette la valeur, sinon la créer et ainsi de suite. Puis actualisé la liste avec le Ct ajouté, et si un Ct existe dans la liste mais ne correspond pas avec un Ct de la structure alors ne pas mettre de valeur.

    Avez vous une idée pour faire ça sans être trop bourrin car je n'ai pas trop d'idée pour le moment.

    Merci pour votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Salut,

    je pense qu'avec seulement une boucle for et des boucles if ca devrait suffire sans trop charger ton programme.
    J'aimerai faire un test mais j'aurai besoin d'avoir une ou deux de tes structures.
    Tu peux les joindre à la discussion ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    Merci Mac j'ai joint la structure. (En fait il me dit que .mat n'est pas un format valide)

    En fait, je me suis lancé dans la structure Map de Matlab, car il permet d'utiliser la fonction "iskey" donc je pense qu'en utilisant ça, je peux savoir si la clé existe déjà.

    Quelqu'un sait comment lui donner 3 clés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    keySet_contrepartie =   {'BNP', 'CIC', 'LCL', 'CA'};
    keySet_date =   {'001', '002', '003', '004'};
    keySet_maturite={'1', '2', '3', '4'};
    Et quand je lui demande la valeur il me sort celle qui correspond, par exemple CIC,002,3 donne une valeur, LCL,002,3 donne une autre valeur.

    En fait pour chaque valeur de keySet_contrepartie il y a 4 dates et pour chacune des 4 dates il y'a 4 maturités.

    Comme a je pourrais simplement appelé une valeur.

    Mais je pensais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mapObj1 = containers.Map(keySet_contrepartie,keySet_date)
    mapObj2 = containers.Map(mapObj1,keySet_date)
    mapObj3 = containers.Map(mapObj2,value)
    Mais dès la création de mapObj2 j'ai un problème.

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

    Une solution au problème initial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    c = struct2cell(maStruct);
    c = [c{:}];
    [unik ia ic] = unique(c(1,:));
     
    fields = fieldnames(maStruct);
    nbFields = numel(fields);
    res = cell(1+nbFields, numel(unik));
    res(1,:) = unik;
    for k=1:nbFields
       idx = ismember(unik,maStruct.(fields{k})(1,:));
       res(k+1,idx) = maStruct.(fields{k})(2,:);
    end
    Je ne sais pas si c'est pour l'exemple, mais évite de nommer une variable struct, qui est déjà le nom d'une fonction MATLAB.

    Pour l'utilisation de Map, je te déconseillerais de faire 3 niveaux, mais à la place concaténer les trois clés pour n'en faire qu'une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    keySet_contrepartie = {'BNP', 'CIC', 'LCL', 'CA'};
    keySet_date = {'001', '002', '003', '004'};
    keySet_maturite = {'1', '2', '3', '4'};
    values = rand(1,4);
     
    catKeys = @(varargin) strjoin(varargin, char(10));
    keys = cellfun(catKeys, keySet_contrepartie ,...
                            keySet_date,...
                            keySet_maturite,....
                            'UniformOutput', false);
    maMap = containers.Map(keys, values);
     
    maMap(catKeys('BNP', '001', '1')) % values(1)
    Dernière modification par Invité ; 05/08/2014 à 16h39.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    Je vais regarder ça merci

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

Discussions similaires

  1. Problème Listes chainées Structure contenant
    Par loco_info dans le forum C
    Réponses: 3
    Dernier message: 17/05/2007, 13h08
  2. <welcome-file-list> problème MAJ variable
    Par rock'roll dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/05/2007, 16h23
  3. Problème de variable
    Par vp dans le forum Windows
    Réponses: 2
    Dernier message: 14/05/2004, 16h27
  4. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 17h41
  5. [servlet]problème de variable jamais nulle
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2004, 09h31

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