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

Interfaces Graphiques Discussion :

chaque ligne du popup => matrice correspondante + plot


Sujet :

Interfaces Graphiques

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 21
    Points : 9
    Points
    9
    Par défaut chaque ligne du popup => matrice correspondante + plot
    Bonjour,

    Je posède une matrice (que j'appelle 'matrice') à 5 colonnes composées de (x,y,critère1, critère2 et critère3) et j'ai un menu popup permettant de choisir un de ces critères. Le but est de tracer chaque critère en fonction de x et y.
    Je souhaite, lorsque je sélectionne un critère dans mon menu popup, avoir une matrice à 3 colonnes [x y critèreseléctionné].

    Comment puis-je mettre en relation le choix du critère effectué dans mon menu popup et la matrice correspondante.

    ex: pour le critère1, je souhaite une matrice à 3 colonnes composées de x,y et critère1 (soient les colonnes 1,2,3 et ma matrice 'matrice)
    pour le critère2, les colonnes 1,2,4 de ma matrice...ect

    j'ai fait ce petit programme, mais cela ne fonctionne pas...


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    % selectionner la valeur de la ligne du popupmenu
     
    str=get(handles.popup,'string');
    val=get(handles.popup,'Value');
    str=cellstr(str); 
    str1=str{1};
    str2=str{2};
    str3=str{3};
     
     
    switch get(handles.popup,'value')
     
        case 1
            str1==1
            criterion1 = reshape(matrice(:,3), length(x), length(y));
     
            tx = 1:.25:length(x); % x axis interval
            ty= 1:.25:length(y); % y axis interval
            [XI,YI] = meshgrid(tx,ty);
            ZI = griddata(X,Y,criterion1,XI,YI);
            mesh(XI,YI,ZI), hold
            plot3(X,Y,criterion1,'o'), hold off
     
        case 2
            str2==1
            criterion2 = reshape(matrice(:,4), length(x), length(y));
     
            tx = 1:.25:length(x); % x axis interval
            ty= 1:.25:length(y); % y axis interval
            [XI,YI] = meshgrid(tx,ty);
            ZI = griddata(X,Y,criterion1,XI,YI);
            mesh(XI,YI,ZI), hold
            plot3(X,Y,criterion2,'o'), hold off
     
        case 3
            str3==1
            criterion3 = reshape(matrice(:,5), length(x), length(y));
     
            tx = 1:.25:length(x); % x axis interval
            ty= 1:.25:length(y); % y axis interval
            [XI,YI] = meshgrid(tx,ty);
            ZI = griddata(X,Y,criterion1,XI,YI);
            mesh(XI,YI,ZI), hold
            plot3(X,Y,criterion3,'o'), hold off
     
    end

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Ton instruction reshape est mal utilisée.
    Pourquoi ne pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     criterion1=matrice(:,1:3)

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Le problème c 'est que je dois utiliser un reshape car sinon je n'ai pas les bonnes valeurs associées à mes coordonnées...

    J'ai essayé avec votre suggestion mais cela ne fonctionne toujours pas..

    En effet, j'obtiens la matrice suivante:

    criterion1 =

    val1 val3
    val2 val4

    alors que je voudrais:

    criterion1 =

    val1 val2
    val3 val4

    et que cela fonctionne pour n lignes.


    ex: j'obtiens:

    criterion1 =

    50 5
    10 12

    alors que je voudrai avoir:


    criterion1 =

    50 10
    5 12

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut chaque ligne du popup => matrice correspondante + plot
    Bonjour,

    Tu peux essayer cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    criterion3 = [matrice(:,1:2)' matrice(:,3)]

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    j'ai ce message d'erreur:

    Error using horzcat
    Dimensions of matrices being concatenated are not consistent.

    Error in criterions_curves>browse_Callback (line 148)
    criterion3 = [matrice(:,1:2)' matrice(:,3)]

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    J'ai aussi essayé comme cela (très sommaire):

    criterion3=[matrice(:,1) matrice(:,2) matrice(:,5)]

    J'ai bien la bonne matrice lorsque je l'affiche, par contre lorsque je le met dans mon switch/case, ça ne fonctionne pas...

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    criterion3=[matrice(:,1) matrice(:,2) matrice(:,5)]
    est la même chose que :
    [matrice(:,1:2) matrice(:,5)]

    Quelle erreur as-tu?

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Je fais un reshape de la colonne du critère que je veux et j'ai le message d'erreur suivant:

    Error using reshape
    To RESHAPE the number of elements must not change.

    programme associé:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    switch get(handles.popup,'value')
     
        case 1
            str1==1 
     
                criterion1=matrice(:,3);
                crit1=reshape(criterion1, length(x), length(y));
     
                tx = 1:.25:length(x); % x axis interval
                ty= 1:.25:length(y); % y axis interval
                [XI,YI] = meshgrid(tx,ty);
                ZI = griddata(X,Y,criterion1,XI,YI);
                mesh(XI,YI,ZI), hold
                plot3(X,Y,crit1,'o'), hold off
     
        case 2
            str2==1
     
                criterion2= matrice(:,4);
     
                crit2= reshape(criterion2, length(x), length(y));
     
                tx = 1:.25:length(x); % x axis interval
                ty= 1:.25:length(y); % y axis interval
                [XI,YI] = meshgrid(tx,ty);
                ZI = griddata(X,Y,criterion1,XI,YI);
                mesh(XI,YI,ZI), hold
                plot3(X,Y,crit2,'o'), hold off
     
        case 3
            str3==1
     
    %            criterion3=reshape(matrice(:,5), length(x), length(y));
     
               criterion3= matrice(:,5);
     
               crit3=reshape(criterion3, length(x), length(y));
     
               tx = 1:.25:length(x); % x axis interval
               ty= 1:.25:length(y); % y axis interval
               [XI,YI] = meshgrid(tx,ty);
               ZI = griddata(X,Y,criterion1,XI,YI);
               mesh(XI,YI,ZI), hold
               plot3(X,Y,crit3,'o'), hold off
     
    end

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Je pense qu'il y a du mieux.

    J'ai remplacé mon ancien reshape par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    crit1=reshape(matrice(:,3), length(x),2);
    Etant donné que je souhaite avoir des matrices n lignes et 2 colonnes.
    Je n'ai par conséquent plus le problème: To RESHAPE the number of elements must not change.

  10. #10
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonsoir,

    Effectivement, il faut faire attention avec "reshape" de conserver le même nombre d'éléments de la matrice.

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Visiblement le problème du reshape est résolu. J'ai décidé de retirer mon switch case afin de, pour commencer, simplement tracer les courbes pour chaque critère (puis je rajouterai mes conditions):

    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
    17
    18
    19
    20
    21
    22
    x=unique(matrice(:,1));
    y=unique(matrice(:,2));
    c1=unique(matrice(:,3))
    c2=unique(matrice(:,4))
    c3=unique(matrice(:,5))
    % 
    % switch get(handles.popup,'value')
    % 
    %     case 1
    %         str1==1 
     
     
                critique1= reshape(c1, length(x), 2)
                C1=[critique1].'
     
     
                tx = 1:.25:length(x); % x axis interval
                ty= 1:.25:length(y); % y axis interval
                [XI,YI] = meshgrid(tx,ty);
                ZI = griddata(X,Y,C1,XI,YI);
                mesh(XI,YI,ZI), hold
                plot3(X,Y,C1,'o'), hold off
    le problème c'est que j'ai une erreur sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ZI = griddata(X,Y,C1,XI,YI);
    j'ai l'erreur suivante:

    Error using griddata (line 84)
    Input coordinates cannot be complex.


    J'avoue ne pas comprendre pourquoi...

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Finalement, le problème vient peut-être d'au-dessus. Je vais y aller step by step pour trouver le problème.

    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/08/2012, 15h27
  2. [Débutant] Multiplier chaque ligne d'une matrice terme à terme par un vecteur
    Par Cpowa dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/04/2012, 18h32
  3. Réponses: 2
    Dernier message: 21/10/2011, 22h04
  4. Fonction Find sur chaque ligne d'une matrice creuse
    Par Mathieu999 dans le forum MATLAB
    Réponses: 13
    Dernier message: 11/02/2011, 15h04
  5. Réponses: 3
    Dernier message: 08/04/2009, 13h10

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