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 :

GUI affichage et opération sur les matrices


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2011
    Messages : 42
    Points : 15
    Points
    15
    Par défaut GUI affichage et opération sur les matrices
    Bonjour à tous et à toutes! Et bonne année 2013 également!

    Alors j'ai un souci dans le développement d'une interface graphique. J'ai 3 axes dans mon interface avec trois popupmenu qui me permettent d'afficher une matrice de niveaux parmi 4 au choix.

    Je souhaite pouvoir faire des opérations sur ces matrices et les ré-afficher après lesdites opérations (ex: flipud, fliplr ...)

    Je rentre ces fonctions dans 3 autres popupmenu qui sont censés effectuer l'opération demandée, chacun étant affilié à un des 3 axes.

    J'arrive à afficher avec une première fonction n'importe quelle matrice dans n'importe quel axe par contre j'ai du mal à effectuer l'opération que je veux sachant que je souhaite conserver la même matrice dans mon axe et effectuer une opération sur cette même matrice au sein d'une autre fonction.

    Ci-joint une capture d'écran et le bout de code qui gère les éléments cités:

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    function popFigure2_Callback(hObject, eventdata, handles)
    % hObject    handle to popFigure2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    figure2 = get(hObject, 'Value');
    % handles.exprt_fig2 = get(hObject, 'Value');
    set(handles.textAxes2,'String',handles.setFigure{figure2});
     
    axes(handles.axes2);
    switch handles.setFigure{figure2}
        case 'SQx'
            handles.axes2 = imagesc(handles.SQx);
        case 'SQy'
            handles.axes2 = imagesc(handles.SQy);
        case 'MQx'
            handles.axes2 = imagesc(handles.MQx);
        case 'MQy'
            handles.axes2 = imagesc(handles.MQy);
    end
     
    % clear figure2; 
    % clear axes;
    % guidata(hObject, handles); 
     
    % --- Executes during object creation, after setting all properties.
    function popFigure2_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to popFigure2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    if ispc
        set(hObject,'BackgroundColor','white');
    else
        set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
    end
     
     
    % --- Executes on selection change in popFigure1.
    function popFigure1_Callback(hObject, eventdata, handles)
    % hObject    handle to popFigure1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    figure1 = get(hObject, 'Value');
    % handles.exprt_fig1 = get(hObject, 'Value');
    set(handles.textAxes1,'String',handles.setFigure{figure1});
     
    axes(handles.axes1);
    switch handles.setFigure{figure1}
        case 'SQx'
            handles.axes1 = imagesc(handles.SQx);
        case 'SQy'
            handles.axes1 = imagesc(handles.SQy);
        case 'MQx'
            handles.axes1 = imagesc(handles.MQx);
        case 'MQy'
            handles.axes1 = imagesc(handles.MQy);
    end
     
    %  clear figure1;
    %  clear axes;
    %  guidata(hObject, handles);
     
     
    % --- Executes during object creation, after setting all properties.
    function popFigure1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to popFigure1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    % Hint: popupmenu controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc
        set(hObject,'BackgroundColor','white');
    else
        set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
    end
     
     
    % --- Executes on selection change in popMain.
    function popMain_Callback(hObject, eventdata, handles)
    % hObject    handle to popMain (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    figureMain = get(hObject, 'Value');
    % handles.exprt_figMain = get(hObject, 'Value');
    set(handles.textAxes,'String',handles.setFigure{figureMain});
     
    axes(handles.axes);
    switch handles.setFigure{figureMain}
        case 'SQx'
            handles.axes = imagesc(handles.SQx);
        case 'SQy'
            handles.axes = imagesc(handles.SQy);
        case 'MQx'
            handles.axes = imagesc(handles.MQx);
        case 'MQy'
            handles.axes = imagesc(handles.MQy);
    end
    % clear figureMain; 
    % clear axes;
    % guidata(hObject, handles); 
     
     
    % --- Executes during object creation, after setting all properties.
    function popMain_CreateFcn(hObject, eventdata, handles)
     
    if ispc
        set(hObject,'BackgroundColor','white');
    else
        set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
    end
     
     
     
    % --- Executes on selection change in popupMenuAxes1.
    function popupmenuAxes1_Callback(hObject, eventdata, handles)
     
    handles.Value1 = get(hObject, 'Value')
    axes(handles.axes1);
    switch handles.imgProcess{handles.Value1}
        case 'Fliplr'
            handles.Value1
            switch handles.setFigure{handles.figure1}
                case 'SQx'
    %                 axes(handles.axes1);
                    handles.axes1 = imagesc(fliplr(handles.SQx));
                case 'SQy'
    %                 axes(handles.axes1);
                    handles.axes1 = imagesc(fliplr(handles.SQy));
                case 'MQx'
    %                 axes(handles.axes1);
                    handles.axes1 = imagesc(fliplr(handles.MQx));
                case 'MQy'
    %                 axes(handles.axes1);
                    handles.axes1 = imagesc(fliplr(handles.MQy));
            end
         case 'Flipud'
             handles.Value1
            switch handles.setFigure{handles.exprt_fig1}
                case 'SQx'
                    handles.axes1 = imagesc(flipud(handles.SQx));
                case 'SQy'
                    handles.axes1 = imagesc(flipud(handles.SQy));
                case 'MQx'
                    handles.axes1 = imagesc(flipud(handles.MQx));
                case 'MQy'
                    handles.axes1 = imagesc(flipud(handles.MQy));
            end
    end


    Petite précision, les popupmenu gérant l'affichage sont ceux nommés 'figure 1' 'figure 2' et 'main figure' sur l'interface et ceux gérant le opérations, 'axes1' 'axes 2' et 'main axes'

    Merci d'avance!
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir, et bonne année également

    Je ne suis pas sûr d'avoir très bien cerné ton problème, toutefois, j'aurais une remarque sur ton code :

    Les lignes handles.axes2 = imagesc(handles.SQx); sont incorrectes : la sortie de la fonction imagesc n'est pas le handle d'un objet Axes, mais d'un objet Image. Tu écrases donc sa valeur.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2011
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Oui ce n'est pas évident à expliquer. Je traite un certain nombre de matrices dont je rentre le nom dans trois popupmenus qui gèrent chacun un axe. (cf p-j précédente: le panel 'send images to axes').

    Une fois que les images sont affichées, je souhaite effectuer des opérations suivant les besoins sur ces matrices, ces opérations étant gérées par trois autres popupmenus chacun gérant également un axe (cf p-j le panel 'image options').

    Mon problème c'est que j'aimerai récupérer le nom de la matrice qui est affiché dans tel axe et travailler sur celle-ci quand je sélectionne une opération sur le popupmenu correspondant à cet axe.

    Merci pour ta réponse déjà je vais voir si je peux m'en tirer. Effectivement c'est un peu absurde ce que j'ai codé...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2011
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Bon c'est réglé. Mais effectivement l'histoire du handles.axes était la base de réflexion. Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ED2912 Voir le message
    Mon problème c'est que j'aimerai récupérer le nom de la matrice qui est affiché dans tel axe et travailler sur celle-ci quand je sélectionne une opération sur le popupmenu correspondant à cet axe.
    Comme tu l'as fait dans les popFigure(1/2)_Callback pour le switch, tu peux récupérer la chaîne affichée par tes popups :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    figure1 = get(handles.popFigure1, 'Value');
    handles.setFigure{figure1}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    figure2 = get(handles.popFigure2, 'Value');
    handles.setFigure{figure2}
    Autre remarque : plutôt que de faire axes(handles.axesi) pour fixer handles.axesi comme l'objet Axes courant, et faire te opérations dessus, tu as aussi la possibilité de la faire passer aux fonctions que tu utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cla(handles.axesi)
    imagesc(tonImage , 'Parent', handles.axesi)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2011
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Ah sur le gong!

    Mais merci je vais quand même étudier ta proposition

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/04/2013, 11h53
  2. Opérations sur les matrices
    Par mister3957 dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 01/11/2007, 23h47
  3. Opérations sur les matrices...
    Par aokiseiichiro dans le forum C
    Réponses: 32
    Dernier message: 28/07/2005, 17h10

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